特殊权限
概述
linux文件的三种特殊权限分别是:suid权限、sgid权限、sticky权限;其中suid权限作用于文件属主,sgid权限作用于属组上,sticky权限作用于other其他上。
SET UID
应用于可执行的普通文件,当一个文件被设置SET UID特殊权限时,任何人一旦执行该文件,将临时拥有该文件拥有人的权限。
例如:/etc/shadow
的权限所有人都无读、写、执行权限。在拥有者的权限列的执行权限位置,如果是s
或者S
,则该文件被设置了SET UID权限。如:ls -l /bin/passwd
可以看到s
权限。chmod u-s /bin/passwd
则所有用户都不能修改密码。/etc/shadow
所有用户都没有任何权限,只有root用户可以修改,/bin/passwd
属主是root,其他用户再执行时临时拥有root用户的权限就可以修改密码。
suid权限也可以使用数字形式表示,0
表示去除suid权限,4
表示添加suid权限,而且是在原权限的数字表达形式开头加0
或4
,如:0755
移除suid权限,4755
添加suid权限。
SET GID
SET GID特殊权限应用于目录文件,当一个目录设置SET GID特殊权限时,任何用户都可以在该目录下创建文件,文件的所属组都被设置为SET GID的那个所属组。
例如:
1)目录dir1
属主zk
,属组zk
,chmod g+s dir1
- 使用用户
hcj
,属组是hcj
,在dir1
下hcj
:touch 1.txt
,则1.txt
的属组是zk
而不是hcj
。
Sticky(粘置位)
针对有写权限的目录设置的特殊权限位,当一个有写权限的目录被设置sticky权限,那么任何人再该目录下创建的文件,就只有文件拥有者和root用户可以删除。该特殊权限位,控制了目录的写权限。
对于目录的写权限来说,该权限有点太大了,sticky就是用来显示该权限。如果其他人的执行权限位,是t
或者T
,则该目录被设置了sticky权限。
特殊权限设置时,执行权限被覆盖,如果是小写,则没有执行权限,如果是大写,则有执行权限。
示例
/tmp
使用的sticky权限,以实现所有用户都可以写入,并且只有自己和root可以修改
chmod +t mydir
给mydir设置sticky权限
chmod -t mydir
给mydir去除sticky权限