一、Set UID
SUID仅可应用在二进制程序上,不能应用在shell脚本上。
- SUID权限仅对二进制程序有效
- 执行者对于该程序需要具有x的可执行权限
- 本权限仅在执行该程序的过程中有效
- 执行者将具有该程序拥有者(owner)的权限
例:
#查看/etc/shadow文件权限
[root@localhost ~] ll /etc/shadow
----------. 1 root root 1250 3月 29 00:09 /etc/shadow
#文件权限为全无,也就是说只有root才有对该文件修改写入
#那么为什么一般用户输入passwd也可以修改自己的密码?
#再来查看一下passwd的执行文件/usr/bin/passwd
[root@localhost ~] ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27856 8月 9 2019 /usr/bin/passwd
[root@localhost ~] chown 0755 /usr/bin/passwd
[root@localhost ~] ll /usr/bin/passwd
-rwxr-xr-x. 1 755 root 27856 8月 9 2019 /usr/bin/passwd
#修改该文件权限后
[root@localhost ~] su chen
[chen@localhost root]$ passwd
更改用户 chen 的密码 。
为 chen 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:
无效的密码: 密码少于 8 个字符
新的 密码:
重新输入新的 密码:
passwd: 鉴定令牌操作错误
#再切换到其他用户修改自己密码则显示鉴定令牌错误,表示为无权限
1.其他用户在修改自己密码时对此文件有执行权限
2.该文件的拥有者是root
3.当其他用户在修改自己密码时会暂时获得root的权限
4.所以/etc/shadow就会被用户所修改
二、Set GID
当s标志在文件拥有者的x想为SUID,而当s标志在用户的x位置时则为SGID
1. 对于文件来说
- SGID对二进制程序有用
- 程序执行者对于该程序需要由x的执行权限
- 执行者在执行的过程中获得该程序用户组的支持
[root@localhost ~] ll /usr/bin/locate
-rwx--s--x. 1 root slocate 40520 4月 11 2018 /usr/bin/locate
#与SUID几乎相同,当其他用户执行该文件时,会暂时获得该文件属组的权限
2.对于目录来说
- 用户若对于此目录具有r与x的权限时,该用户能够进入此目录
- 用户在此目录下的有效用户组将会变成该目录的用户组
- 用途:若用户在此目录下具有w的权限(可以新建文件),则用户建立的新文件,该信文件的用户组与此目录的用户组相同
[root@localhost media] chmod 2777 wenjian
[root@localhost media] ll -d wenjian/
drwxrwsrwx. 2 root root 6 4月 14 19:03 wenjian/
[root@localhost media] su chen
[chen@localhost media]$ cd wenjian/
[chen@localhost wenjian]$ mkdir chen
[chen@localhost wenjian]$ ll
总用量 0
drwxrwsr-x. 2 chen root 6 4月 14 19:10 chen
#从以上可以看出将/media/wenjian目录赋予SGID后
#其他用户在此目录创建的文件属组都是属于root
三、Sticky Bit
- 只针对目录有效
- 当用户对于此目录具有w、x权限,即具有写入的权限
- 当用户在该目录下建立文件或目录时,仅有自己与root才有权力删除文件
[root@localhost wenjian] chmod 1777 /media/wenjian
[root@localhost wenjian] ll -d /media/wenjian
drwxrwxrwt. 2 root root 19 4月 14 19:19 /media/wenjian
[root@localhost wenjian] touch 1.txt
[root@localhost wenjian] chmod 777 1.txt
[root@localhost wenjian] su chen
[chen@localhost wenjian]$ exit
exit
[chen@localhost wenjian]$ rm 1.txt
rm: 无法删除"1.txt": 不允许的操作
#上述实验可以看出,在被赋予了SBIT的/media/wenjian的目录下
#只能对自己的文件或目录进行修改
#不能对其他人的目录进行修改
四、SUID、SGID、SBIT的权限设置
在chmod设置权限时的三个数字前再加一位数字
- 4为SUID
- 2为SGID
- 1为SBIT
例:
chmod g-s [filename]
#删除SGID
chmod u-s [filename]
#删除SUID
chmod o-t [filename]
#删除SBIT
chmod 7777 [filename]
#设置为满权限
如果在设置权限时把该文件的x执行权限去掉后会出现大写的S或T,这样没有执行权限的话怎么给其他人使用,所以忽略就好