在目录上设置粘性位可能就足够了.用户可以删除自己拥有的任何文件,但不能删除其他用户的文件.对于您的用例来说,这可能已经足够了.在大多数系统上,/tmp是这样设置的(/tmp设置为1777)
chmod 1775/受控
然而,如果您想要更多的控制,就必须在有问题的文件系统上启用ACL.
在/etc/fstab中,将acl附加到标志:
/dev/root / ext3 defaults,acl 1 1
然后可以使用setfacl/getfacl来控制和查看acl级别的权限.
示例:(创建文件,一旦写入,它们是只读的,但可以由所有者删除,但不能由其他人删除.)
setfacl --set u::rwxs,g::rwx /controlled
setfacl -d --set u::r-x,g::r-x,o::- /controlled
您可以在一个目录上设置默认acl列表,该目录将由在该目录中创建的所有文件使用.
正如其他人所指出的,要小心地明确说明你想要什么.你说"写"——但用户能覆盖他们自己的文件吗?他们可以更改现有内容,还是只是附加内容?一旦写好,它就是只读的?也许你可以在 comments 中详细说明.
最后,selinux和grsecurity提供了更多的控制,但这是另一种蠕虫.它的设置可能非常复杂.