APP下载

Samba服务权限配置案例

2018-11-06

网络安全和信息化 2018年7期
关键词:配置文件设置用户

任务需求与分析

将/share/archive目录创建为Samba共享,并完成下列要求:

1.共享名为archive。

2.zhangsan、lisi、wangwu用户都能通过输入用户名和密码(Skills39)登录并上传文件。

3.其他人不能访问共享目录。

4.zhangsan能够查看和删除所有人的文件。

5.lisi能够查看所有人的文件,但不能删除别人的文件。

6.wangwu只能查看和删除自己的文件,不能查看和删除别人的文件。

在这6项需求中,第1、2、3项需求属于Samba服务的常规配置,实现起来较为简单 ;第 4、5、6 项需求主要是针对不同用户的权限设置,需要结合系统权限完成配置,实现起来较为复杂。下面就从这两个方面分别进行分析。

图1 定义共享

Samba常规配置

在CentOS 7.4系统中所提供的Samba版本为4.6.2,软件默认没有安装,首先执行下列命令安装、启动服务,并将之设为开机自动运行。

# yum install samba

# systemctl start smb

# systemctl enable smb

Samba的配置文件为“/etc/samba/smb.conf”,下面在配置文件中定义共享,相关设置项如图1所示。

对设置项的解释:

[archive]:指 定 共 享名,也就是客户端在访问时所看到的共享目录名字。

path:指 定共享目录在服务器中对应的实际路径,要求必须使用绝对路径。

valid users :只允许指定的Samba用户访问该共享。

writable:共享目录是否允许Samba用户写入。这里虽然设置了所有Samba用户都可以写入,但由于“valid users”设置项限制了只有指定的三个用户可以访问共享,因而实际上也只有这三个用户可以写入。

配置完成后,保存退出。

下面创建共享目录,并将其权限设为777。

# mkdir -p /share/archive

# chmod 777 /share/archive

接下来再创建Samba用户。由于Samba用户要以系统用户为基础,因而需要先创建出系统用户之后,再将其添加为Samba用户。这里为了进行测试,额外再创建一个Samba用户maliu。

# useradd -s /sbin/nologin zhangsan

# useradd -s /sbin/nologin lisi

# useradd -s /sbin/nologin wangwu

# useradd -s /sbin/nologin maliu

下面将这些系统用户添加为Samba用户,同时需要为每位用户指定密码。需要注意的是,Samba用户的密码与系统用户的密码没有任何关系。

# smbpasswd -a zhangsan

# smbpasswd -a lisi

# smbpasswd -a wangwu

# smbpasswd -a maliu

最后,可以通过执行“pdbedit -L”命令列表显示目前系统中已经存在的所有Samba用户。

# pdbedit -L

zhangsan:1009:

lisi:1010:

wangwu:1011:

maliu:1012:

至此,Samba的常规配置就完成了。执行“systemctl restart smb”命令重启服务使配置生效。然后可在Windows或Linux客户端进行访问测试,用户zhangsan、lisi、wangwu都可以访问共享并上传文件,但用户maliu没有访问共享的权限。具体测试过程从略。

权限设置

下面再来完成第 4、5、6项要求,这也是在这整个任务需求中最复杂的部分。将这三项需求进行归纳,核心问题主要有两个:是否允许删除别人的文件,是否允许读取别人的文件。下面分别来解决这两个问题。

1.限制删除别人的文件

要完成这个任务,首先需要明确一个问题:在Linux系统中,用户需要具有哪种权限才可以将一个文件删除。

Linux系统规定,用户只要对某个目录具备“写入(w)”权限,便可修改或删除该目录中的任何文件,而不论这个文件的权限是什么。

也就是说,用户能否删除一个文件,取决于用户对文件所在的目录是否具有写入权限。由于我们将共享目录/share/archive的系统权限设为777,因而,此时任何用户都可以删除该目录中的任意文件。但在任务5和任务6中,又明确要求用户lisi和wangwu不能删除别人的文件,所以这里自然就想到了sbit粘滞位权限。

sbit权限的作用是:当目录被设置了sbit权限之后,即便用户对目录有“写入(w)”权限,也不能删除该目录中其他用户的文件,每个文件只有该文件的所有者和root用户才有权将其删除。

因而,下面需要为共享目录/share/archive设置sbit权限:

# chmod o+t /share/archive/

# ll -d /share/archive/

drwxrwxrwt. 2 root root 26 4月 28 20:32 /share/archive/

这样,所有的Samba用户都可以向共享目录中上传文件,但是只能删除自己的文件,而无法删除别人的文件。

但如此一来,又无法满足任务4的需求,用户zhangsan也无法删除别人的文件。到此,思路好像进入了死胡同。

其实,关于sbit权限还有一条规则,那就是:对于目录的所有者,可以不受sbit权限的限制,他可以删除该目录中所有用户的文件。

只要明白了该规则,问题自然就迎刃而解了,我们只需将共享目录的所有者更改为zhangsan即可。

# chown zhangsan /share/archive/

# ll -d /share/archive/

drwxrwxrwt. 2 zhangsan root 26 4月 28 20:32 /share/archive/

至此,关于能否删除文件的需求就全部解决了。

2.限制读取别人的文件

同之前一样,要完成这个任务,首先需要明确用户具有哪种权限才可以读取文件。这个问题相对比较简单,在Linux系统中,用户只要对文件本身具有“读取(r)”权限,那么便可以查看文件中的内容。

图2 定义上传文件的默认权限

图3 用户上传文件的默认权限

综合任务 4、5、6 这三项需求,用户zhangsan和lisi可以读取所有人的文件,而用户wangwu则只能读取自己的文件。下面是具体的实现过程。

首先,在Samba的配置文件“/etc/samba/smb.conf”中定义用户上传文件的默认权限,这里需要用到“create mask”设置项,将用户上传文件的默认权限设置为0640,也即只有文件的所有者以及所属组用户,才具有读取权限。相关设置项如图2所示。

设置完成后,同样需要执 行“systemctl restart smb”命令重启服务生效。

接下来我,们只需使用户zhangsan和lisi能够成为每个上传文件的所属组的成员即可,但是默认情况下,用户所上传文件的所属组都是与该用户同名的私有组,如果要使得所有用户上传文件的所属组都能够是同一个指定的用户组,那么就需要为共享目录设置SGID权限。

SGID权限的作用是:如果针对目录设置SGID,则在该目录内所建立的文件或子目录的所属组,将统一被自动设置成此目录的所属组。

比如,我们在系统中创建一个名为admin的用户组,并将其设为共享目录/share/archive/的所属组,然后再对/share/archive/目录设置SGID权限,这样用户在共享目录中上传的所有文件,默认的用户组都统一被设置成了admin。

# groupadd admin

# chown :admin /share/archive/

# chmod g+s /share/archive/

# ll -d /share/archive

drwxrwsrwt. 2 zhangsan admin 60 4月29 10:01 /share/archive

然后再将用户zhangsan和lisi都加入到admin组即可。

# gpasswd -a zhangsan admin

# gpasswd-a lisi admin

最后,分别以用户zhangsan、lisi、wangwu 的身份在目录中上传文件,默认权限如图3所示。

至此,这个案例中的所有任务需求都已全部完成。对于Linux系统中绝大多数服务,用户在使用时的最终权限基本都是由两个因素综合决定的:一个因素是在服务配置文件中所做的相关设置,另一个则是系统权限。因而,作为系统运维人员,必须熟知服务配置和系统权限,这样方能更好地满足各种不同的实际工作需求。

猜你喜欢

配置文件设置用户
中队岗位该如何设置
从Windows 10中删除所有网络配置文件
船舶防火结构及设置的缺陷与整改
互不干涉混用Chromium Edge
基于Zookeeper的配置管理中心设计与实现
忘记ESXi主机root密码怎么办
关注用户
关注用户
关注用户
中俄临床医学专业课程设置的比较与思考