setuid 和 setgid 分别是 set uid ID upon execution 和 set group ID upon execution 的缩写。我们一般会再次把它们缩写为 suid 和 sgid。它们是控制文件访问的权限标志(flag),它们分别允许用户以可执行文件的 owner 或 owner group 的权限运行可执行文件。
当 s 出现在文件拥有者的 x 权限上时,就被称为 SETUID BITS 或 SETUID 。
$ ls -ld /usr/bin/passwd
-rwsr-xr-x 1 root root 68208 May 28 06:37 /usr/bin/passwd
其特点如下:
当 s 标志出现在用户组的 x 权限时称为 SGID。SGID 的特点与 SUID 相同
当一个目录设置了 SGID 权限后,它具有如下功能:
其实 SBIT 与 SUID 和 SGID 的关系并不大。SBIT 是 the restricted deletion flag or sticky bit 的简称。SBIT 目前只对目录有效,用来阻止非文件的所有者删除文件。
权限信息中最后一位 t 表明该目录被设置了 SBIT 权限。SBIT 对目录的作用是:当用户在该目录下创建新文件或目录时,仅有自己和 root 才有权力删除。
$ ls -ld /tmp
drwxrwxrwt 12 root root 4096 Sep 16 01:50 /tmp
$ chmod u+s testfile # 为 testfile 文件加上 SUID 权限。
$ chmod g+s testdir # 为 testdir 目录加上 SGID 权限。
$ chmod o+t testdir # 为 testdir 目录加上 SBIT 权限。