介绍
linux文件的三种特殊权限分别是:suid权限、sgid权限、sticky权限;其中suid权限作用于文件属主,sgid权限作用于属组上,sticky权限作用于other其他上。
类型 | 作用域名 | 权限对应数字 | 案例 |
---|---|---|---|
SUID | 文件属主 | 4 | /etc/shadow |
SGID | 用户组 | 2 | 创建目录权限是否跟随主的组 |
Sticky | other | 1 | /tmp使用的sticky权限 |
SUID
应用于可执行的普通文件,当一个文件被设置SET UID特殊权限时,任何人一旦执行该文件,将临时拥有该文件拥有人的权限。
例子:
/etc/shadow的权限所有人都无读、写、执行权限。在拥有者的权限列的执行权限位置,如果是s或者S,则该文件被设置了SET UID权限。如:ls -l /bin/passwd可以看到s权限。
chmod u-s /bin/passwd则所有用户都不能修改密码。/etc/shadow所有用户都没有任何权限,只有root用户可以修改
SGID
SET GID特殊权限应用于目录文件,当一个目录设置SET GID特殊权限时,任何用户都可以在该目录下创建文件,文件的所属组都被设置为SET GID的那个所属组。
例子:
在root的家目录下创建一个node文件夹
[root@servera ~]# mkdir node
[root@servera ~]# cd node
创建子文件夹
[root@servera node]# mkdir test1
此时子文件夹的所属组是root
[root@servera node]# ll
total 0
drwxr-xr-x. 2 root root 6 Jul 20 22:34 test1
更改node文件夹的所属组为u1用户
[root@servera node]# chown :u1 ../node/
[root@servera node]# ll
total 0
drwxr-xr-x. 2 root root 6 Jul 20 22:34 test1
给node文件夹以及子文件夹授权sgid权限
[root@servera ~]# chmod -R g+s node/
[root@servera ~]# cd node/
再创建目录后查看权限
[root@servera node]# mkdir test2
[root@servera node]# ls
test1 test2
test2创建后的文件夹所属组自动变成了u1,是因为上级文件夹有SGID权限
[root@servera node]# ll
total 0
drwxr-sr-x. 2 root root 6 Jul 20 22:34 test1
drwxr-sr-x. 2 root u1 6 Jul 20 22:36 test2
Sticky
针对有写权限的目录设置的特殊权限位,当一个有写权限的目录被设置sticky权限,那么任何人再该目录下创建的文件,就只有文件拥有者和root用户可以删除。该特殊权限位,控制了目录的写权限。
例子:
/tmp使用的sticky权限,以实现所有用户都可以写入,并且只有自己和root可以修改