在上篇博文中,我们实现了用户身份验证,并且可以为不同的用户分配相应的访问权限。下面我们继续将问题深入一下,假设要在Samba服务器中创建一个名为“gongzi“的共享目录,专门用于存放公司员工工资等财务报表,要求所有员工都能读取这个共享目录,但是只有财务部的员工能够写入。

 

根据上篇博文的内容,要实现这个要求并不难,只需在“write list”列表中加入财务部员工账户就可以了,但是如果财务部员工人数比较多,那我们可以将这些账户都加入到同一个组里,然后只需将用户组加入到“write list”列表中。下面我们就来实现这个操作。

首先创建一个名为“caiwu”的用户组:

# groupadd caiwu
假设“zhangsan”和“lisi”是财务部的两个员工账户,下面创建用户账号并将其加入到caiwu组。

# useradd -g caiwu zhangsan
# useradd -g caiwu lisi
# id zhangsan
uid=502(zhangsan) gid=502(caiwu) 组=502(caiwu)

然后将他们都设置为Samba用户:

084916561.jpg

创建gongzi目录并将权限开到最大:

085208562.jpg

修改配置文件/etc/samba/smb.conf,在文件末尾增加一个[gongzi]小节:

085522905.jpg

注意,在write list列表中,在caiwu组的前面加了一个@符号,表示这是一个用户组,而不是用户。

保存退出后,重启服务:

# service smb restart

然后在客户端访问测试,当用smbuser或smbadmin的用户身份访问gongzi时,只有读取权限,而利用caiwu组成员zhangsan或lisi访问时,则拥有写入的权限。

 

注意:在Windows系统中访问共享时,当成功地利用某个用户身份访问共享之后,就会在客户端与服务器之间建立起了一个共享连接,这个连接会保持一段时间,在这段时间内,如果再次去访问这个共享,便会自动利用之前的用户身份进行访问,这样就不利于我们的测试。在Windows客户端可以执行下面的命令将共享连接强制断开,这样再次访问共享时便要重新进行身份验证了。

090329386.jpg


上个问题解决了之后,我们继续将问题深入,如果公司保密规定比较严格,要求共享目录gongzi只有财务部的员工才可以访问,并且只有财务部经理(zhangsan)才拥有写入权限。

要完成这个要求,就得继续修改配置文件:

090950312.jpg

首先将“public = yes”项删除,因为这项的作用就是允许所有Samba用户都拥有访问权限。然后增加“valid users”项,只有在这项后面的用户或用户组才拥有访问共享目录的权限。同时再将“write list”设为zhangsan。

设好之后,重启服务。

在客户端再次访问,当用smbuser用户的身份访问共享目录gongzi时,会出现对话框要求再次进行身份验证:

092426749.jpg

当以财务部员工lisi的身份访问时,只能够读取而无法写入:

092611504.jpg

只有zhangsan才拥有读取+写入的权限。