允许所有用户在目录中创建文件,但只有文件的所有者才能写入/删除自己的文件

允许所有用户在目录中创建文件,但只有文件的所有者才能写入/删除自己的文件

我想创建一个共享目录,该目录应对特定组具有写入权限,但只有创建该文件的所有者才应对自己的文件具有写入/删除权限。

例如,

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

相关内容