【中级】RHEL6.5下部署samba企业级文件服务器实战

简介:

 

1.          实验需求:

1)     使用RPM包安装samba服务

2)     实现匿名访问,验证可以读写文件、目录

3)     实现指定用户的访问

4)     实现指定用户的访问,并为用户赋予不同的权限

5)     实现用户的别名访问,并测试权限

6)     实现对特定的访问地址进行限制

7)     实现访问windows系统中的共享资源

2.          实验环境:

Linux服务器系统版本:Red Hat Enterprise Linux 6.5     IP:192.168.10.3

Windows客户机系统版本:Windows 7 Ultimate x64      IP:192.168.10.2

Samba软件版本:samba-3.6.9

3.      实验步骤:

基本安装操作

A.   挂载系统光盘并安装samba

要安装samba服务需要从rpm软件包安装,rpm安装包一般放在系统光盘中的Packages目录中,我们首先用mount命令看一下是否挂载了光盘到系统中

wKioL1SG9pHiDdYJAAEXYUNh8VE660.jpg

如果没有挂载,将光盘手动挂载到系统的mnt目录下

wKiom1SG9eSjSNlrAAA8mm_IYQk121.jpg

查看光盘已经被挂载

wKiom1SG8_mR5oHHAAFaIAAv2HM115.jpg

在Packages目录下找到samba服务的软件包并安装

wKioL1SG9iDCosF1AADHVimQrR8151.jpg

B.   查看samba配置文件

安装好samba之后我们要想服务器能够按照我们的意愿工作就要去修改配置文件了

可以用rpm -qc来查看一个已经安装软件的文档安装位置

wKioL1SG9v2RVmorAAA3QojunxE194.jpg

发现并没有显示conf配置文件,但根据经验一般conf配置文件都会放在/etc目录下,查找/etc/samba/目录,找到主配置文件smb.conf

wKioL1SG9LqDHd7eAAAqpqO_rS4545.jpg

[root@localhost~]# more /etc/samba/smb.conf 查看文件里面的内容,发现内容很长,并且有很多#号的注释

wKiom1SG9DXDSyCgAAIIuycTBjw796.jpg

我们为了看起来方便,可以过滤掉所有带#号的行,并把过滤过后的文件内容保存为另外一个文件smb.con:

[root@localhost ~]# grep -v"#" /etc/samba/smb.conf > /etc/samba/smb.con

查看发现已经有了smb.con文件,建议原来以.conf结尾的配置文件也不要删除,可以给它改个名字做个备份,以防将来配置出错还可以把它继续拿来修改

wKiom1SG9sbzk4LfAAAu7L_S8tw450.jpg

           [root@localhost ~]# cd /etc/samba  #切换到samba目录

           [root@localhost samba]# mv smb.confsmb.conf.back   #将conf文件备份

           [root@localhost samba]# mv smb.consmb.conf    #将smb.con改名为smb.conf        

wKioL1SG93CTHFU8AAA1ESpRAyI023.jpg


实现匿名访问,验证可以读写文件、目录

[root@localhostsamba]# vi smb.conf  #打开主配置文件

[global]

       workgroup = MYGROUP

       server string = Samba Server Version %v

;      netbios name = MYSERVER

;      interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24

;      hosts allow = 127. 192.168.12. 192.168.13.

       log file = /var/log/samba/log.%m

       max log size = 50

       security = share 

       passdb backend = tdbsam

以上为[global]全局模式的配置内容,其他保持默认即可,我们关心的是如果要实现匿名访问,只需要修改 security 使安全级别为share(默认的为user)

下面是对share共享目录进行配置,在配置文件的末尾插入以下行

[share]                #指定目录的共享名称

path= /opt/share      #指定共享share这个目录

public= yes           #public=guest ok,设为yes允许匿名用户访问

browseable= yes       #让匿名用户可以看到共享内容

writable= yes         #设置可以有写入的权限

createmask = 0644     #设置新建文件的权限,表示属主具有读写权限,其他人都只有只读权限(rw-r--r--)

directory mask = 0755  #设置新建目录的权限,表示属主具有读写执行权限,其他人没有写入权限(rwxr-xr-x)

A.   修改后的脚本:

wKiom1SG9xXA9frIAADugBFON9M951.jpg

wKioL1SG96uhE8RKAADlUvOAazg696.jpg

[root@localhostsamba]# mkdir /opt/share  #创建share共享目录

[root@localhostsamba]# chmod 777 /opt/share  #修改权限为777

[root@localhostsamba]# service smb start  #启动samba服务

wKioL1SG97yC9dPkAAAqLyQHTFA369.jpg

[root@localhostsamba]# netstat -ant  #查看网络端口状态

wKiom1SG90KTfvpgAAD-wB0jogo527.jpg

139和445两个samba服务的端口正在被监听,samba服务是正常的,下面就可以去客户机上测试了。测试之前,必须把防火墙和selinux关掉

             [root@localhost samba]# service iptables stop

             iptables:将链设置为政策ACCEPT:filter                    [确定]

             iptables:清除防火墙规则:                                [确定]

             iptables:正在卸载模块:                                  [确定]

             [root@localhost samba]# setenforce 0

B.   效果验证:

在客户机上测试能否ping通服务器

wKioL1SG9_eCcoE6AAGcGAVJ_Iw100.jpg

在【开始】菜单的搜索框中输入\\192.168.10.3,可以看到名为share的共享文件夹

wKioL1SG-AmSOiC7AAF79bzqhTw853.jpg

进入文件夹,可以新建文件和文件夹,文件里可以写入任何内容,文件夹下也能够再新建文件,和配置文件里的设置是一样的,匿名访问成功。

wKiom1SG94XD6WCkAAGbz9uk5lU384.jpg

回到服务器,我们查看共享文件夹下匿名用户访问时新建的文件,发现属主和属组都是nobody,新建的文件权限是644,文件夹的权限是755

wKioL1SG-DvCXJYgAAB0iuFRKDw367.jpg

nobody是一个系统账号,匿名访问新建的就会显示为nobody

wKiom1SG97KB0pShAAA0Fz0MHcw491.jpg


实现指定用户的访问

因为是要指定用户进行访问了,所以[global]全局模式里面只需要修改 security   

使默认安全级别为user

  security = user

下面是根据具体的共享目录进行配置,在配置文件的末尾插入以下行,新建一个test  的目录的共享配置,不让他匿名访问,只有指定用户才能访问

[test]                 #指定目录的共享名称

path= /opt/test       #指定共享test目录

browseable= yes       #设置可以看到共享内容

writable= yes         #设置可以有写入的权限

createmask = 0644     #设置新建文件的权限,表示属主具有读写权限,其他人都只有只读权限(rw-r--r--)

directory mask = 0755  #设置新建文件夹的权限,表示属主具有读写执行权限,其他人没有写入权限(rwxr-xr-x)

系统当中的用户当然也可以访问共享目录,但是我们这里希望用samba自己的账户来访问,新建两个用于samba的账户不设置他们的密码,这样他们可以作为samba用户使用但是不能够登陆系统

[root@localhost samba]# useradd jery        #创建账户jery和jene

    [root@localhost samba]# useradd jene

[root@localhost samba]# smbpasswd -ajery   #设置账户为samba用户并设置密码

New SMB password:

Retype new SMB password:

Added user jery.

[root@localhost samba]# smbpasswd -ajene

New SMB password:

Retype new SMB password:

Added user jene.

[root@localhost samba]#

[root@localhost samba]# pdbedit -L  #查看新建的samba账户信息

jery:500:

jene:501:

[root@localhost samba]# mkdir /opt/test  #创建共享目录test

[root@localhost samba]# chmod 777/opt/test #修改权限为777

[root@localhost samba]# service smbrestart  #重启samba服务,这里也可以使用reload,但是reload是重新加载配置并不会和客户机彻底断开连接,这里为了测试用了restart

关闭 SMB 服务:                                            [确定]

    启动 SMB 服务:                                            [确定]

A.   修改后的脚本

wKioL1SG-F-zxK--AADnBKHkjyI714.jpg

wKiom1SG98rBja13AADpdZLDh_0253.jpg

B.   效果验证

测试之前先要在客户机上清除之前的连接否则会因为缓存而直接进入共享目录

wKioL1SG-GzzW8QMAABZnEjYYoU621.jpg

在【开始】菜单的搜索框中输入\\192.168.10.3\test,跳出对话框,输入jery的账号和密码

wKiom1SG9-3gkNJrAACn14dbAsw998.jpg

jery这个用户可以登陆并且对test共享目录可以进行读写操作

wKiom1SG-DCg-BVbAAFl73ZwxBk832.jpg

wKioL1SG-MeDjHwVAAGFVkklfEg510.jpg

在共享目录里面新建了一个名为jery的文件,回到服务器查看这个文件的权限,显示为jery 

wKioL1SG-QTzLDWcAAA7Xz0P21I513.jpg


实现指定用户的访问,并为用户赋予不同的权限

接着为了测试访问的用户的不同权限,在[test]配置中加入以下两行

valid users =jery, jene  #允许这两个用户可以访问

write list =jene         #只允许jene这个用户可以写入

A.   修改后的脚本

wKiom1SG-KygjTJVAAEN2UGzNVg846.jpg

B.   效果验证

[root@localhostsamba]# service smb restart   #重启服务

关闭SMB 服务:                                            [确定]

启动SMB 服务:                                            [确定]

客户机上net use * /d清除连接

这次以jery登陆,测试写入文件

wKiom1SG-L-BQwpEAAGxaXpFJjY401.jpg

这个时候明明我们设置了只有jene可以写入为什么用jery登陆进去的时候还是可以写入文件呢?我们回到服务器上检查配置文件

wKioL1SG-W3ioFKFAAGKG4_jNus528.jpg

所以要使配置生效就必须删除writable = yes这一行配置

wKiom1SG-PmgZTAhAAD2HAzi5-M284.jpg

[root@localhostsamba]# service smb restart  #重启服务

关闭SMB 服务:                                            [确定]

启动SMB 服务:                                            [确定]

清除连接(net use * /d),还是以jery  的身份登陆,发现创建文件的时候被拒绝

wKiom1SG-Q3hP0EiAACn14dbAsw173.jpg

wKiom1SG-RCiDAjbAAG_ipFBH7s002.jpg

回到服务器,写入一行内容到test文件中:

[root@localhostsamba]# echo "this is test" > /opt/test/test.txt

客户机上已经有名为test的文件了,当打开这个文件,为它加上一行内容时被拒绝

wKioL1SG-cbyP8xbAAGOoVd4SF0556.jpg

wKiom1SG-TKj-gshAAHPZb2Xnl0913.jpg

退出jery,清除连接,再用jene登陆,jene写入文件和文件夹成功。


wKioL1SG-d_ySr3eAADE8apOVZU863.jpg

wKiom1SG-UyAHhfAAAGx1bgf0DA230.jpg


实现用户的别名访问,并测试权限

samba目录下有一个smbusers的文件,这个文件就是设置别名的

wKiom1SG-WvQ8ceoAAAqS26s8Nc868.jpg

[root@localhostsamba]# vi smbusers  

wKiom1SG-X7Sr-Y5AABdySr7xBI544.jpg

打开这个文件,在文件的末尾加上一行 jene = t01 t02 t03  相当于给jene起了三个别名,将后面三个的用户名都映射到jene,密码不变,实际登陆的账号还是jene

接着在主配置文件的[global]中添加:username map = /etc/samba/smbusers配置映射关联,用户名就指向了smbusers这个文件中设置的内容

A.   修改后的脚本 

wKioL1SG-i6hZ1cQAACNNsc9KyQ740.jpg

wKiom1SG-ZmwkNs4AAE_W9nH8ng786.jpg

B.   效果验证

[root@localhostsamba]# service smb restart  #重启服务

关闭SMB 服务:                                            [确定]

启动SMB 服务:                                            [确定]

客户机清除连接(net use * /d)

用t01账号登陆 \\192.168.10.3

wKiom1SG-auR-ktQAAGQymYcgLs345.jpg

看到多了一个名为jene的共享文件夹,是因为全局配置中有[homes]家目录的配置,谁登陆就会把自己的家目录共享,因为t01映射的还是jene账号,所以jene登陆时也会看到自己的家目录也被共享了,在家目录的共享文件夹中是可以进行任何操作的

wKiom1SG-cfxUbwZAAGQymYcgLs075.jpg

wKioL1SG-l7Q7nspAAERqVq-v80981.jpg

在test文件夹中新建一个名为iamt01的文件,回到服务器查看这个文件的属性,属主和属组是jene证明登陆的还是jene,t02和t03登陆也是这样,这里就不多做测试了

wKiom1SG-eLi5kCKAAIGV7FOIC0025.jpg

wKioL1SG-nfh75HKAAC5dXvyLU8948.jpg 


实现对特定的访问地址进行限制

若要拒绝谁访问,只需要在主配置文件的[test]中添加一行:hosts deny = 192.168.10. 10.0.0.  #192.168.10.表示192.168.10.0这个网段,让这个网段的所以主机都不可以访问,这里设置拒绝两个网段192.168.10.0和10.0.0.0

A.   修改后的脚本wKioL1SG-o-TFDa6AAFdnns5kCY298.jpg


B.   效果验证

[root@localhostsamba]# service smb restart  #重启服务

关闭SMB 服务:                                            [确定]

启动SMB 服务:                                            [确定]

客户机清除连接(net use * /d)

这次使用t02这个账号来访问,可以访问其他共享文件夹但是因为客户机ip地址为192.168.10.2,在test共享文件夹拒绝访问的网段里面所以当打开test文件夹时提示了拒绝访问

wKiom1SG-hSgQpUpAACs8qyLocY788.jpg

wKioL1SG-qvjJzuiAAHnS6OtxC8670.jpg


实现访问windows系统中的共享资源

我们在客户机(win7系统)上共享了一个名为LAMP的文件夹

 [root@localhost samba]# smbclient -L192.168.10.2  #列出客户机中的共享资源

wKioL1SG-sCQwtjqAAEnHUyGQ58260.jpg

 [root@localhost samba]# mount.cifs//192.168.10.2/LAMP /tmp/  #如果想要访问这个LAMP文件夹,可以将LAMP挂载到服务器的tmp目录下

 [root@localhost ~]# df -hT  #查看挂载情况,已挂载

wKioL1SG-tGwhhbqAAEPaBXC_b0850.jpg

查看挂载后的tmp目录下的内容,LAMP里面都是tar压缩包

wKiom1SG-kryD9dNAADrnyonafQ000.jpg

 [root@localhost samba]# cp/tmp/apr-1.4.6.tar.gz ~  #将其中一个压缩文件拷贝到根目录下(根目录可以是/root也可以直接写成~)

wKioL1SG-vOh5ZTzAABNM-8sXxk748.jpg

[root@localhostsamba]# umount /tmp  #把挂载的LAMP从tmp目录下卸载掉

卸载之后查看tmp目录显示了原来tmp目录下的文件和目录

wKiom1SG-mzBhkVoAABLJ7au-l8654.jpg

4.          实验总结:

1)     samba服务在Linux的系统中实现了微软的SMB/CIFS  网络协议,在部署windows、Linux混合平台的企业环境时,能够很好的解决不同系统之间的文件互访问题,使文件共享变得更加容易,是非常强大的功能

2)     samba服务提供了几种很实用的访问共享权限,也提供了服务器客户端的访问控制,在修改配置文件时一定要注意各个权限的配置是否冲突或者遗漏,平时可多做权限方面的测试



本文转自Y.weisheng 51CTO博客,原文链接:http://blog.51cto.com/yuan2/1588085,如需转载请自行联系原作者
相关文章
|
16天前
|
监控 安全 Linux
RHEL 环境下 Subversion 服务器部署与配置
【10月更文挑战第18天】在RHEL环境下部署Subversion服务器需依次完成安装Subversion、创建版本库、配置服务器、启动服务、客户端连接及备份维护等步骤。确保遵循安全最佳实践,保障数据安全。
|
20天前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
109 60
|
21天前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
127 62
|
6天前
|
机器学习/深度学习 弹性计算 运维
云计算系列之阿里云ECS服务器管理实战
本文档介绍了阿里云ECS(Elastic Compute Service)的基本概念、实例管理、磁盘操作、快照与镜像功能及其应用场景,最后通过具体案例解析ECS的实际应用。ECS是阿里云提供的高效、可靠的云计算服务,支持多种业务需求,如Web应用、高并发网站、数据库等,帮助企业快速构建稳定安全的应用,提升运维效率,降低IT成本。文档还详细说明了ECS实例的创建方式、连接方法及日常管理操作,帮助用户更好地利用ECS服务。
33 2
云计算系列之阿里云ECS服务器管理实战
|
7天前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
82 2
|
7天前
|
NoSQL Linux PHP
|
8天前
|
弹性计算 数据库连接 Nacos
阿里云ECS服务器在docker中部署nacos
docker pull nacos 失败,docker部署nacos遇到的问题,nacos数据库连接,nacos端口映射
45 1
|
13天前
|
监控 网络安全 调度
Quartz.Net整合NetCore3.1,部署到IIS服务器上后台定时Job不被调度的解决方案
解决Quartz.NET在.NET Core 3.1应用中部署到IIS服务器上不被调度的问题,通常需要综合考虑应用配置、IIS设置、日志分析等多个方面。采用上述策略,结合细致的测试和监控,可以有效地提高定时任务的稳定性和可靠性。在实施任何更改后,务必进行充分的测试,以验证问题是否得到解决,并监控生产环境的表现,确保长期稳定性。
28 1
|
17天前
|
安全 Linux 数据安全/隐私保护
RHEL 环境下 Subversion 服务器部署与配置
【10月更文挑战第17天】在RHEL环境下部署Subversion服务器包括安装Subversion、创建和配置版本库、启动服务器、客户端连接以及备份与恢复等步骤。通过这些步骤,可确保服务器的安全性和稳定性,满足版本控制需求。
|
22天前
|
存储 数据库 虚拟化
无缝过渡:企业级服务器迁移的策略与最佳实践
【10月更文挑战第4天】随着企业数字化转型的加速,服务器迁移成为企业IT基础设施升级的重要环节。本文从架构与规划的视角,探讨了企业级服务器迁移的策略与最佳实践,旨在帮助企业实现无缝过渡,降低迁移风险,提高迁移效率。
74 4