Answers:
粘性位在可全局写入的目录(例如)上很有用/tmp
。在这些目录中,任何人都可以创建文件,因此该目录必须是可全局写入的。但这意味着任何人都可以删除文件,即使该文件不属于他们也是如此,因为删除文件是由目录的写权限控制的。当目录具有粘性位时,只有文件所有者有权删除它。
在具有rwx------
或权限的目录中rwxr-xr-x
,只有目录所有者可以创建或删除文件。如果有任何文件属于另一个用户(由根用户移至该文件,或在目录具有更多打开权限时创建),则目录所有者仍有权删除它们,而不是文件的所有者。
在具有权限的目录rwxrwx---
中,组的所有成员都可以创建和删除文件。组中的任何成员都可以删除任何文件,即使该文件属于另一个用户。如果rwxrwx--T
改为使用权限(大写T
字母类似于t
,但t
表示该x
位已设置且T
该x
位为清除),则该组的任何成员都可以创建文件,并且该组的成员可以删除文件,但只能删除自己的文件。
您可以使用以下命令查看系统上哪些目录具有粘性位:
find / /run /run/lock /run/shm -xdev -path /usr -prune -o -perm -o+t -ls 2>/dev/null
您会发现一些目录(例如/tmp
对所有人开放)和某些目录(例如)/var/spool/cron/crontabs
保留给以其自己的组(setgid)运行的系统程序,其中的粘性位确保该程序只能代表该程序删除文件。拥有它们的用户(确保程序只能代表拥有它们的用户创建文件是因为程序正在以该用户而不是root身份运行,因此无法创建属于其他用户的文件)。