文件特殊权限
- SetUID
- SetGID
- Sticky BIT
SetUID
SetUID的功能:
- 只有可以执行的二进制程序才能设定SUID权限,普通的文件或目录设置了也没有任何作用
- 命令执行者要对对程序拥有执行X权限
- 命令执行者在执行该程序时获得该程序文件属主的身份
- SetUID 权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
总结一句话就是,给某个可执行程序授予了SetUID后,其他普通用户执行这个程序时就获得了该程序文件的所有者身份。
# 可以看到passwd命令,所有者的权限中有一个s的权限,这里的s就是代表SetUID
[root@VM-8-7-centos tmp]# ll /usr/bin/passwd
-rwsr-xr-x 1 root root 27856 Apr 1 2020 /usr/bin/passwd
普通用户本来是没有权限去操作/etc/shadow文件的,但是当我们执行passwd命令后,该普通用户就变成了root用户去操作影子文件了。
设定SetUID
4代表SUID,2代表SGID,1代表SBIT
chmod 4755 文件名
chmod u+s 文件名
取消SetUID
-
chmod 755 文件名
-
chmod u-s 文件名
大写的S来警告用户有错误
# 创建一个文件
[root@VM-8-7-centos tmp]# touch aaa
# 这个文件 都没有执行权限
[root@VM-8-7-centos tmp]# ll
total 0
-rw-r--r-- 1 root root 0 Apr 10 11:35 aaa
# 因为都没有执行权限,这里给他SUID后再查看 就会发现所有者的权限中有一个S,大写的S表示有错误,没有执行权限
[root@VM-8-7-centos tmp]# chmod u+s aaa
[root@VM-8-7-centos tmp]# ll
total 0
-rwSr--r-- 1 root root 0 Apr 10 11:35 aaa
SetGID
SGID和SUID有一点不太一样,SUID只能是可执行的二进制程序,而SGID除了可执行的二进制文件之外,还允许设定目录。
SetGIDdy针对文件的作用:
- 只有可以执行的二进制程序才能设定SGID权限
- 命令执行者要对对程序拥有执行X权限
- 命令执行者在执行该程序时获得该程序文件所属组的身份
- SetGID同样只有在执行程序过程中有效
SetGIDdy针对目录的作用:
- 普通用户必须对此目录拥有r和x权限,才能进入此目录
- 普通用户在此目录中的所属组会变为该目录的所属组
- 普通用户对该目录拥有w权限时,新增的文件的默认所属组是这个目录的所属组
设定SGID
2代表SGID
chmod 2755 目录或文件
chmod g+s 目录或文件
取消SGID
chmod 755 目录或文件
chmod g-s 目录或文件
Sticky BIT
SBIT粘着位作用
- SBIT粘着位只对目录起作用
- 普通用户对该目录拥有写入权限
- 如果没有SBIT粘着位,普通用户如果对目录拥有w权限,那么它可以删除该目录下的所有文件,包括其他用户创建的文件。一旦赋予了SBIT粘着位,除了root可以删除所有文件,普通用户就算有w权限也只能删除自己创建的文件,不能删除其他用户创建的文件。
# SBIT粘着位的标准是在 other中有一个t
[root@VM-8-7-centos ~]# ll -d /tmp
drwxrwxrwt. 7 root root 4096 Apr 10 14:12 /tmp
设置SBIT粘着位
chmod 1777 目录名
chmod o+t 目录名
取消SBIT粘着位
chmod 777 目录名
chmod o-t 目录名