我想创建一个共享目录,该目录应对特定组具有写入权限,但只有创建该文件的所有者才应对自己的文件具有写入/删除权限。
例如,
mkdir /var/tmp/testdir
chown root:group1 /var/tmp/testdir
chmod 770 /var/tmp/testdir
如果user1在目录中创建了一个文件,
su - user1
touch testfile1
现在,我们不希望任何其他用户修改由 user1 创建的文件 testfile1。如何实现这一目标?
答案1
这就是“粘性位”或目录上的“限制删除标志”用于(请参阅man chmod
)。
它用于像/tmp/
and 这样的目录/var/tmp/
,其中所有用户都可以创建、重命名和删除自己的文件,但不允许属于其他用户的文件(读取和/或修改文件本身仍然取决于文件的权限)。
需要注意的是,该文件的所有者是 root,和目录的所有者可以删除(或重命名)设置了粘滞位的目录中的文件。所有者是因为他们拥有文件,目录所有者是因为他们拥有目录,而 root 是因为他们是 root。如果该目录由 root 拥有,则只有 root 和文件的所有者可以重命名或删除其中的文件。
chmod +t
首次设置权限时,您可以添加粘性位或使用 4 位八进制权限代码 (+1000)。例如
chmod 1770 /var/tmp/testdir
或者
chmod +t /var/tmp/testdir