user服务器实例解析
在CentOS 7系统中,Samba 服务程序默认使用的是用户日令认证模式(user)。这种认证式可以确保仅让有密码且受信任的用户访问共享资源,而且验证过程也十分简单。
【例5】如果公司有多个部门,因工作需要,就必须分门别类地建立相应部门的目录。要求将销售部的资料存放在Samba服务器的/companydata/sales/目录下集中管理,以便销售人员浏览,并且该目录只允许销售部员工访问。
需求分析:在/companydata/sales/目录中存放有销售部的重要数据,为了保证其他部门无法查看其内容,我们需要将全局配置中 sccurity 设置为user 安全级别。这样就启用了 Samba服务器的身份验证机制。然后在共享目录/companydata/sales 下设置 valid users字段,配置只允许销售部员工访问这个共享目录。
(1)建立共享目录,并在其下建立测试文件。
[root@CentOS7-1 ~]#mkdir /companydata
[root@CentOS7-1 ~]#mkdir /companydata/sales
[root@CentOS7-1 ~]#touch /companydata/sales/test_share.tar
(2)添加销售部用户和组并添加相应的 Samba 账号。
①使用groupadd命令添加 sales组,然后执行 useradd命令和passwd命令,以添加销售部员工的账号及密码。此处单独增加一个test_user1账号,不属于sales组,供测试用。
[root@CentOS7-1 ~]#groupadd sales #建立销售组sales
[root@CentOS7-1 ~]#useradd -g sales salel #建立用户sale1,添加到sales组
[root@CentOS7-1 ~]#useradd -g sales sale2 #建立用户sale2,添加到sales组
[root@CentOS7-1 ~]#useradd test_user1 #供测试用
[root@CentOS7-1 ~]#passwd sale1 #设置用户sale1 密码
[root@CentOS7-1 ~]#passwd sale2 #设置用户sale2密码
[root@CentOS7-1 ~]#passwd test_user1 #设置用户test_user1密码
②为销售部成员添加相应 Samba 账号。
[root@CentOS7-1 ~]#smbpasswd -a sale1
[root@CentOS7-1 ~]#smbpasswd -a sale2
(3)修改 Samba 主配置文件 smb.conf。
[global]
workgroup = Workgroup
server string = File Server
security=user #设置user安全级别模式,默认值
passdb backend =tdbsam
printing=cups
printcap name = cups
load printers = yes
cups options = raw
[sales]
comment=sales #设置共享目录的共享名为sales
path=/companydata/sales #设置共享目录的绝对路径
writable = yes
browseable = yes
valid users = @sales #设置可以访问的用户为sales组
(4)设置共享目录的本地系统权限和属性。
[root@CentOS7-1 ~]# chmod 770 /companydata/sales -R
[root@CentOS7-1 ~]# chown :sales /companydata/sales -R
-R参数是递归用的,一定要加上。
(5)更改共享目录和用户家目录的context值,或者禁掉SELinux。
[root@CentOS7-1 ~]#chcon -t samba_share_t /companydata/sales -R
[root@CentOS7-1 ~]#chcon -t samba_share_t /home/sale1 -R
[root@CentOS7-1 ~]#chcon -t samba_share_t /home/sale2 -R
或者:
[root@CentOS7-1 ~]#getenforce
Enforcing
[root@CentOS7-1 ~]#setenforce Permissive
(6)让防火墙放行,这一步很重要。
[root@CentOS7-1 ~]# firewall-cmd --permanent --add-service=samba
success
[root@CentOS7-1 ~]# firewall-cmd --reload //重新加载防火墙
success
[root@CentOS7-1 ~]# firewall-cmd --list-all
public (active)
target:default
icmp-block-inversion: no
interfaces:ens33
sources:
services:ssh dhcpv6-client samba //已经加入防火墙的允许服务
ports:
protocols:
masquerade:no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
(7)重新加载Samba 服务。
[root@CentOS7-1 ~]# systemctl restart smb
//或者
[root@CentOS7-1 ~]# systemctl reload smb
(8)测试。
一是在Windows中利用资源管理器进行测试,二是利用Linux客户端。
特别提示:Samba 服务器在将本地文件系统共享给Samba 客户端时,涉及本地文件系统权限和 Samba 共享权限。当客户端访问共享资源时,最终的权限取这两种权限中最严格的。