linux中文件与目录的特殊权限

时间:2022-01-09 15:12:18

time:18.03.26

以以下2个典型的文件及目录来分析:

 ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 27832 Jan 29  2014 /usr/bin/passwd
ll -d /tmp
drwxrwxrwt. 23 root root 4096 Mar 25 23:53 /tmp

SUID

s出现在文件拥有者的x权限上时,如我们上面看到的/usr/bin/passwd这个文件的权限时-rwsr-xr-x,此时就被称为SET UID简称SUID.
SUID权限仅对二进制可执行文件有效

执行者对于该文件具有x的权限
本权限仅在执行该文件的过程中有效
执行者将具有该文件拥有者的权限

举例:
普通用户使用passwd命令修改自己的密码, 实际上最终更改的是/etc/passwd文件.该文件权限如下:

ll /etc/passwd
-rw-r--r--. 1 root root 2394 Mar 25 23:17 /etc/passwd

可以看到只有root用户才有写权限, 因为/usr/bin/passwd设置了suid权限位,普通用户执行此命令时临时拥有root权限以间接地修改/etc/passwd从而修改自己的密码.
设置方法
chmod u+s <文件或目录>

SGID

s出现在目录或文件的所有组的x权限上时称为SET GID简称SGID
设置方法
chmod g+s <文件或目录>

SBIT

t出现在目录的其他用户的x权限上时, 称为Sticky Bit简称SBIT[仅对目录有效, 对文件无效]

作用:

当用户在该目录下建立文件或目录时,仅有自己与 root才有权力删除.
最具有代表的就是/tmp目录,任何人都可以在/tmp内增加、修改文件(因为权限全是rwx),但仅有该文件/目录建立者与 root能够删除自己的目录或文件

设置方法
chmod o+t <目录>

若特殊权限未设置成功则显示为大写字母 {S, S, T}