1.SetUID特殊权限
setUID (SUID): 对于一个可执行的文件使用SUID权限后,普通用户在执行改文件后,临时拥有文件所有者的身份,该权限只在程序执行过程中有效,程序执行完毕后用户恢复原有身份。
SetUID权限会附加在所有者的x权限位上,所有者的x权限标识会变成s。
命令格式:chmod u+s 文件名
以给cat设置SUID举例:
[root@localhost ~]# which cat #搜索cat命令绝对路径
[root@localhost ~]# ll /usr/bin/cat #查看cat命令权限
[lucky@localhost ~]$ cat /etc/shadow #普通用户使用cat命令是默认无法查看/etc/shadow文件内容
[root@localhost ~]# chmod u+s /usr/bin/cat #设置SUID权限
[root@localhost ~]# ll /usr/bin/cat #查看cat命令权限
[lucky@localhost ~]$ cat /etc/shadow #普通用户再次使用cat命令时临时获取文件所有者身份
[root@localhost ~]# chmod u-s /usr/bin/cat #去除SUID权限
[root@localhost ~]# ll /usr/bin/cat #查看cat命令权限
2. SetGID特殊权限
SetGID (SGID):当对一个可执行的二进制文件设置了SGID后,普通用户在执行该文件时临时拥有其所属组的权限,该权限只在程序执行过程中有效,程序执行完毕后用户恢复原有组身份。
当对一个目录做设置了SGID权限后,普通用户在该目录下创建的文件;
所属组,均与该目录所属组相同;
SetGID权限会附加在所属组的x权限位上,所属组的x权限表示会变成s。
命令格式:chmod g+s 文件或目录
[root@localhost ~]# mkdir /test7
[root@localhost ~]# chmod 777 /test7
[root@localhost ~]# chmod g+s /test7 #为目录设置SGID权限
[root@localhost ~]# touch /test7/1.txt
[root@localhost ~]# ll /test7/1.txt
[root@localhost ~]# chown :lucky /test7 #修改目录所属组为lisi组
[root@localhost ~]# ll -d /test7
[root@localhost ~]# touch /test7/2.txt #SGID对目录设置后,在该目录下创建的任何文件都会继承父目录的所属组
[root@localhost ~]# ll /test7/2.txt
3.SBIT特殊权限
Sticky BIT (SBIT):该权限只针对目录有效,当普通用户对一个目录拥有rwx权限时,普通用户可以在此目录下拥有增删改查的权限,应为普通用户对目录拥有rwx权限时,是可以删除此目录下的所有文件。
如果对一个目录设置了SBIT权限,除了root可以删除所有文件以外,普通用户就算对该目录拥有rwx权限,也之能删除自己建立的文件,不能删除其他用户建立的文件。
SBIT权限会附加在其他人的x权限位上,其他人的x权限标识会变成t。
命令格式:chmod o+t 目录名
[root@localhost ~]# chmod o+t /test9 #为目录设置SBIT
[root@localhost ~]# ll -d /test9 #查看目录权限
[lucky@localhost test9]$ ls #列出目录下文件
[lucky@localhost test9]$ rm -rf * #删除目录下文件