diff --git a/linux/linux权限标识符.md b/linux/linux权限标识符.md index 9417b46..4bf85cc 100644 --- a/linux/linux权限标识符.md +++ b/linux/linux权限标识符.md @@ -1,7 +1,43 @@ -| g | r | w | x | | -| ---- | ---- | ---- | ---- | ------ | -| u | 4 | 2 | 1 | 7(rwx) | -| g | 4 | 2 | 1 | 7(rwx) | -| o | 4 | 2 | 1 | 7(rwx) | -| | | | | | +| | r | w | x | | +| -------- | ---- | ---- | ---- | ------ | +| u | 4 | 2 | 1 | 7(rwx) | +| g | 4 | 2 | 1 | 7(rwx) | +| o | 4 | 2 | 1 | 7(rwx) | +| 特殊权限 | 4 | 2 | 1 | 7(SST) | + + + + +### SUID(Set User ID) + +- **作用**:当一个可执行文件设置了 SUID 权限,用户执行该文件时,会临时获得文件所有者的权限。 +- **典型应用**:`passwd` 命令,普通用户执行它时能临时获得 root 权限来修改密码。 +- **设置方法**:`chmod u+s 文件名`(字母方式)或 `chmod 4755 文件名`(数字方式,4 代表 SUID) +- **取消方法**:`chmod u-s 文件名` + +### SGID(Set Group ID) + +- **作用**: + - 对文件:执行文件时临时获得文件所属组的权限 + - 对目录:在该目录下创建的新文件会继承目录的所属组 +- **典型应用**:用于团队共享目录,确保新创建的文件能被团队所有成员访问 +- **设置方法**:`chmod g+s 文件名/目录名` 或 `chmod 2755 文件名/目录名`(2 代表 SGID) +- **取消方法**:`chmod g-s 文件名/目录名` + +### Sticky(粘滞位) + +- **作用**:只对目录有效,设置后,只有文件所有者、目录所有者或 root 才能删除该目录下的文件 +- **典型应用**:`/tmp` 目录,允许所有用户创建文件,但不能删除他人文件 +- **设置方法**:`chmod o+t 目录名` 或 `chmod 1777 目录名`(1 代表 Sticky) +- **取消方法**:`chmod o-t 目录名` + +### 权限表示 + +在 `ls -l` 输出中: + +- SUID 显示为 `s`(替代所有者执行权限 `x`),若无执行权限则显示 `S` +- SGID 显示为 `s`(替代组执行权限 `x`),若无执行权限则显示 `S` +- Sticky 显示为 `t`(替代其他用户执行权限 `x`),若无执行权限则显示 `T` + +例如:`-rwsr-xr-x` 表示文件设置了 SUID,`drwxr-sr-x` 表示目录设置了 SGID,`drwxrwxrwt` 表示目录设置了 Sticky 位。