![允许所有用户在目录中创建文件,但只有所有者可以删除](https://linux22.com/image/162607/%E5%85%81%E8%AE%B8%E6%89%80%E6%9C%89%E7%94%A8%E6%88%B7%E5%9C%A8%E7%9B%AE%E5%BD%95%E4%B8%AD%E5%88%9B%E5%BB%BA%E6%96%87%E4%BB%B6%EF%BC%8C%E4%BD%86%E5%8F%AA%E6%9C%89%E6%89%80%E6%9C%89%E8%80%85%E5%8F%AF%E4%BB%A5%E5%88%A0%E9%99%A4.png)
我该如何使用,最好是一个chmod
命令,它允许任何用户在目录中创建文件,但只有文件的所有者(创建它的用户)可以删除自己的文件,但该目录中没有其他人。
我想使用:
chmod 755 directory
既然用户可以创建文件并删除它,但是这是否允许用户删除其他人的文件呢?
我只希望创建该文件的人能够删除自己的文件。因此,任何人都可以创建文件,但只有创建文件的人才能删除该文件(在目录中)。
答案1
粘性位或多或少可以做你想做的事情。从man 1 chmod
:
限制删除标志或粘性位是单个位,其解释取决于文件类型。对于目录,它可以防止非特权用户删除或重命名目录中的文件,除非他们拥有该文件或目录;这称为目录的限制删除标志,通常在 /tmp 等全局可写目录中找到。
也就是说,如果用户是文件的所有者或包含目录的所有者(或者用户是 root),则目录上存在的粘滞位仅允许重命名或删除所包含的文件。
您可以应用粘性位(由八进制 1000 或 表示t
),如下所示:
# instead of your chmod 755
chmod 1777 directory
# or, to add the bit to an existing directory
chmod o+t directory
答案2
大多数/tmp
目录都是使用这种类型的权限集创建的。
你想要世界“粘”一点。设置该位的符号方式是:
# chmod ugo+w,+t directory
“模态”方式是:
# chmod 1777 directory
# ls -ld directory
drwxrwxrwt 2 root wheel 2 Oct 21 17:06 directory/