前面讲过文件的 rwx 普通权限, 但是偶尔我们还会看到 t
权限和 s
权限.
例如 drwxrwxrwt
的 /tmp
, -rwsr-xr-x
的 /usr/bin/passwd
文件等
s
权限替代拥有者 x
权限称为 SUID
SUID
是 SET UID 的意思.
仅对可执行文件有效(不可执行或者文件夹无效)
表示执行此文件的时候, 获取此文件所有者权限.
1 | # 准备当前用户 |
s
权限替代所属组 x
权限成为 SGID
SGID
是 SET GID 的意思.
目录有此权限: 表示创建的新文件默认群组与目录群组相同.
文件有此权限: 表示执行此文件的时候, 获取此文件所属组的权限.
1 | # 准备当前用户 |
t
权限替代其他用户 x
权限成为 SBIT
SBIT
是 Sticky Bit 的意思.
仅对目录有效,对文件无效. 文件夹下面的文件或文件夹, 仅文件所有者与 root 才有权力删除, 即使文件夹为对所属组或者其他用户有些权限也不能删除.
1 | # 准备文件夹 |
SUID SGID SBIT 的设置
权限的分级表示方法
1 | # SUID |
八进制表示方法
与 rwx
类似, 第一位 SUID
为 4, 第二位 SGID
为 2, 第三位 SBIT
为 1. 完整的表示即为 7777
.
所以在有些授权的时候, 指定的是 0755
就是这个道理.
文件所属用户为非 root 时, 用户名与组名不一致无法授权 SGID
当文件所属用户为非 root
的时候, 比如 ops
, 所属组为 dev
, 此时对文件进行授权 SGID
.
文件/文件夹原来没有 x 权限
设置了特殊权限后, s
-> S
, t
-> T
, 表示特殊权限无效.