特殊权限 和 企业实例练习
特殊权限:
# ls -ld /tmp/ ;ls -l /usr/bin/passwd
drwxrwxrwt+ 91 root root 8192 9月 18 11:43 /tmp/
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
. 没有访问控制列表权限
+ 有单独的用户对此文件或目录有ACL权限
# setfacl u:tom:rwx a.txt
SetUID : s 所有者
1. 仅对二进制程序文件有效
2. 执行者对于该程序需要具备X执行权限
3. 只要在执行的过程当中有效
4. 执行者会具备该程序所有者的权限
# ls -l /etc/shadow //所有用户存储密码的文件
----------.
思考:普通用户可不可以自己改密码?
可以!
普通用户是如何添加一行密码内容到这个文件中?(passwd)
1.tom对于/usr/bin/passwd 程序具有x权限
2.passwd拥有者是root
3.tom执行passwd过程,会暂时获得root权限
4./etc/shadow 可以被tom执行的passwd所修改
SetGID : s 所属组
1.对二进制程序有用,对文件和目录也有用
2.程序执行者对于程序来说,需具备x权限
3.执行者会具备该程序所属组的权限
# ls -l /usr/bin/locate
Sticky Bit : t
1.只针对目录
2.当用户对此目录具有wx权限,即具有写入权限时:
当创建目录和文件时,只有创建者可以删除改文件
SetUID 所有者的s 4
SetGID 所属组的s 2
SBit 其他人的t 1
* 特殊权限变成大写,说明设置的特殊权限是空的。
模拟情景:
假设系统中拥有两个账号,分别是alex和tom,这两个人除了自己用户组之外还共同支持一个名为project组。假设这两个用户需要共同拥有/srv/ahome/目录的开发权,且该目录不许被其他人进入查阅。
问:该目录的权限设置为什么?先用传统权限,再用特殊权限
# usergroup project
# useradd -G project alex
# useradd -G project tom
# mkdir /srv/ahome
//创建项目目录
# ls -ld /srv/ahome
//查看权限
# chown :project /srv/ahome
//更高目录所属组
# ls -ld /srv/ahome
# chmod 775 /srv/ahome
//更高目录的权限为全权限
# ls -ld /srv/ahome
[root@xqc 桌面]# su
[root@xqc 桌面]# su tom
[tom@xqc 桌面]$ cd /srv/ahome/
[tom@xqc ahome]$ ls
abcd
[tom@xqc ahome]$ echo haha > abcd
bash: abcd: 权限不够
加入SGID在权限在里面:
[root@xqc 桌面]# chmod 2770 /srv/ahome/
[root@xqc 桌面]# ls -ld /srv/ahome/
drwxrws—. 2 root project 28 9月 20 11:52 /srv/ahome/
[alex@xqc 桌面]$ cd /srv/ahome/
[alex@xqc ahome]$ touch 6789
[alex@xqc ahome]$ ls -l 6789
-rw-rw-r–. 1 alex project 0 9月 20 11:55 6789
这样才是我们想要的结果。