看了一个比赛的题目,感受也挺有意思的,比日常配置的权限稍微有点不一样,而且稍微有点复杂。咱们慢慢来看一看:
• 题目:建立samba共享/share/archive目录,要求:
• 共享名为archive;
• 一、zhangsan,lisi,wangwu用户都能经过输入用户名和密码(Skills39)登陆并上传文件;
• 二、zhangsan可以查看和删除全部人的文件;
• 三、lisi可以查看全部人的文件,但不能删除别人的文件;
• 四、wangwu只能查看和删除本身的文件,不能查看和删除别人的文件;
• 五、其余人不能访问共享目录。安全
安装服务什么的就不在说了,相信大家应该都很是熟练了。ide
1、建立共享目录
首先建立共享目录并将目录设置到最大权限
mkdir -p /share/archive
chmod 777 /share/archive
注意:这里虽然将目录的权限设置到最大,可是咱们能够经过修改配置文件权限来限制用户对这个目录的权限。例如某smb用户对目录有写入的权限,可是配置文件中这个用户没有可写的权限,这个用户仍是不能写。
咱们能够来测试一下,验证zhangsna用户是否有写入的权限
在配置文件中让zhangsna用户不可写。
在客户端验证
Zhangsna用户写入文件失败
因此我认为只有当配置文件和目录都有写入的权限的时候,用户才有权限写入,缺一不可。
2、回归正题,根据题目要求修改服务配置文件。
一、Vim /etc/samba/smb.conf
在文件的最后添加如下几行:
具体说明解释:
(1)Comment=archive共享文件的一个说明,有没有没有关系
(2)Path=/share/archive指定共享目录的路径,必须正确无误
(3)Valid users=zhangsan,lisi,wangwu指定能够用密码登录的用户,
(4)writable=yes.保证三个用户拥有上传的权限测试
到这里的配置咱们经过配置(3)已经知足一、6的限制条件:指定zhangsan,lisi,wangwu用户能够密码登录,并拒绝其余这能够访问。
张三登录成功:
Lisi登录成功
Wangwu登录成功
Maliu登录失败,拒绝访问:3d
3、而后分析2,3,4的题目要求:
一、第二个条件:zhangsan可以查看和删除全部人的文件;
从这条限制能够看出,zhangsan用户对着个共享目录有着绝对的权限。因此咱们要将共享目录的全部者给zhangsan
Chown zhangsan /share/archive
二、而后验证张三用户可否查看和删除全部人的文件。
首先,使用lisi,wangwu用户分别上传文件b.txt,c.txt。
而后,客户端登录zhangsan用户,去查看这两个文件并删除
成功查看文件内容并删除文件。code
• lisi可以查看全部人的文件,但不能删除别人的文件;
• wangwu只能查看和删除本身的文件,不能查看和删除别人的文件;blog
三、这两条还要求lisi,wangwu用户没有删除别人上传的文件的权限,只能删除本身的文件。因此达到这个目的咱们可使用sbit权限it
Sbit权限:SBIT(Sticky Bit)目前只针对目录有效,对于目录的做用是:当用户在该目录下创建文件或目录时,仅有本身与 root才有权力删除。也就是说文件是谁的谁就是老大,其余人只能靠边看着。
(1)设置sbit:
Chmod +t /share/archive
当设置好sbit的时候,在用户权限显示里面的最后,出现t。
(2)客户端验证用户只能删除本身的文件,不能删除别人的文件。
a.txt,b.txt,c.txt分别对应zhangsan,lisi,wangwu用户上传的文件。能够看到lisi用户只能对本身的文件随心所欲,对别人的文件却不能怎样。再看wangwu也是一样如此:
四、再看题目条件,lisi拥有读全部人的权限,而wangwu只能读本身的。这又该怎么办呢。这个地方我思来想去,用了很长时间。忽然我看到配置文件中其余的共享目录中拥有这样的一行配置create mask=。这是给用户建立文件的时候,默认将文件的权限改成create mask等于的值。
(1)若是没有这一行,用户上传的文件是什么权限,咱们看一下:
能够看到,在other上面的权限有能够读的权限,因此,当每一个用户上传完文件的时候,其余用户均可以读。
因此咱们能够经过create mask=的值来限制用户读取的权限,这样不就杜绝了wangwu用户读其余人的文件table
(2)修改配置文件,添加create mask=0740class
create mask=0740,表示文件全部者用户读写执行的权限,用户组有读的权限,其余用户没有任何权限。可是这里出于安全考虑最好不要给执行权限,可设为0640
(3)咱们从新经过这些用户上传文件,并查看上传后的文件权限
(4)验证wangwu只能查看本身的文件:
(5)可是当咱们这样设置之后,lisi,zhangsan还有读取全部人文件的权限吗?:
很显然不能读取别人的权限,由于lisi,zhangsan分别对于另外两人是个外人。那么为了知足要求,咱们又如何让他能够读取全部人的文件。登录
既然是外人,咱们就让lisi分别成为zhangsan,wangwu的亲人,让zhangsan成为lisi,wangwu的亲人。
咱们知道每一个文件的所属组是有读的权限的。
因此将zhangsan,lisi分别加入到他们的亲人组中。这样lisi能够读取zhangsan,wangwu的文件,zhansan能够读取lisiwangwu的文件
(6)因此咱们能够将lisi分别加入到zhangsan组合wangwu组。
Gpasswd -a lisi zhangsan
Gpasswd -a lisi wangwu
分别将zhangsan添加到lisi,wangwu组中
(7)这时候咱们再来验证zhangsan,lisi 是否拥有读取全部文件的权限
成功读取。
综合验证:
一、全部人拥有上传权限
二、 zhangsna能查看和删除全部人的权限
三、验证lisi能查看别人文件,不能删除别人文件
四、验证wagnwu只能看本身的和删除本身的
总结:为了知足要求,也就几条关键的权限设置,分别是:(1)目录全部者要是zhangsan;(2)设置目录权限SBIT(3)配置文件添加create mask=0740;(4)将zhangsan加入到lisi,wangwu用户组中(5)将lisi加入到zhangsan,wangwu用户组中