linux 中除了常见的:读(r)写(w)执行(x)权限外,还有三个特殊的权限,分别是:setuid、setgid、stick bit
stick bit 只对目录有效,使目录下的文件,只有文件拥有者才能删除(如果不是拥有者,就算有w权限也不能删除)
添加方法:
$ chmod o+t /tmp $ chmod 1777 /tmp
查看是否添加 stick bit:使用 ls -l
,可以看到这样的权限-rwxrwxrwt
, t 代表已经添加上了 stick bit 权限,而且生效了,若显示 -rwxrwxrwT
,说明虽然添加上了 sticky bit 权限,但是没有生效(因为本来 other 就没有写的权限)
文件:sgid 权限表示,运行这个程序时,是临时以这个文件的所属组的身份运行
文件夹:表示这个目录下创建的文件都属于文件夹所属组,而不是创建人所在组,在这个目录下创建别的目录会继承目录 sgid
添加方法:
$ chmod g+s /tmp $ chmod 2777 /tmp
查看是否添加 sgid :使用 ls -l
,可以看到这样的权限 drwxrwsrwx
,s 就代表已经加上了 sgid ,并且生效,如果显示 drwxrwSrwx
,说明已经加上了 sgid ,但是没生效(因为本来 group 没有执行权限)
与 sgid 类似,运行时以这个文件的拥有者身份来运行
添加方法:
$ chmod u+s /tmp $ chmod 4777 /tmp
同样的,加了 suid 权限有这两种情况 drwsrwxrwx
drwSrwxrwx
SUID:置于 u 的 x 位,原位置有执行权限,就置为 s,没有了为 S .
SGID:置于 g 的 x 位,原位置有执行权限,就置为 s,没有了为 S .
STICKY:粘滞位,置于 o 的 x 位,原位置有执行权限,就置为 t ,否则为T .