SUID/SGID/SBIT 权限设定

4 为 SUID = u+s

2 为 SGID = g+s

1 为 SBIT = o+t

setuid: 设置使文件在执行阶段具有文件所有者的权限. 典型的文件是 /usr/bin/passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权限, 从而可以更改用户的密码.

当 s 这个标志出现在文件拥有者的 x 权限上时,如上 /usr/bin/passwd 这个文件的权限状态,此时就被称为 Set UID,简称为 SUID 的特殊权限。基本上SUID有这样的限制与功能:

SUID 权限仅对二进位程序(binary program)有效(不能够用在 shell script 上面)

运行者对於该程序需要具有 x 的可运行权限

本权限仅在运行该程序的过程中有效 (run-time)

运行者将具有该程序拥有者 (owner) 的权限

setgid: 该权限只对目录有效. 目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组.

与 SUID 不同的是,SGID 可以针对文件或目录来配置!

如果是对文件来说, SGID 有如下的功能:

SGID 对二进位程序有用,程序运行者对於该程序来说,需具备 x 的权限

运行者在运行的过程中将会获得该程序群组的权限

如果针对的是目录,SGID 有如下的功能:

使用者若对於此目录具有 r 与 x 的权限时,该使用者能够进入此目录;

使用者在此目录下的有效群组(effective group)将会变成该目录的群组;

sticky bit: 该位可以理解为防删除位. 一个文件是否可以被某用户删除, 主要取决于该文件所属的组是否对该用户具有写权限.

如果没有写权限, 则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件. 如果希望用户能够添加文件但同时不能删除文件,

则可以对文件使用sticky bit位. 设置该位后, 就算用户对目录具有写权限, 也不能删除该文件.

这个 Sticky Bit, SBIT 目前只针对目录有效作用是:

当使用者对於此目录具有 w, x 权限,亦即具有写入的权限时;

当使用者在该目录下创建文件或目录时,仅有自己与 root 才有权力删除该文件

换句话说:当甲这个使用者於 A 目录是具有群组或其他人的身份,并且拥有该目录 w 的权限, 这表示『甲使用者对该目录内任何人创建的目录或文件均可进行 "删除/更名/搬移" 等动作。』 不过,如果将 A 目录加上了 SBIT 的权限项目时, 则甲只能够针对自己创建的文件或目录进行删除/更名/移动等动作,而无法删除他人的文件。