是否可以设置目录权限,使一个组能够读取和写入文件和子目录,但不能删除任何内容?
是否可以设置目录权限,使一个组能够读取和写入文件和子目录,但不能删除任何内容?
在目录上设置粘滞位(sticky bit)可能已经足够了。用户将能够删除他们自己拥有的任何文件,但不是其他用户的文件。这可能已经足够满足您的使用情况。在大多数系统中,/tmp 是以此方式设置的(/tmp 设置为 1777)。
chmod 1775 /controlled
然而,如果您想要更多的控制,您需要在所涉及的文件系统上启用 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列表,这个列表会被所有在该目录下创建的文件使用。
正如其他人所指出的那样,要小心地准确说明你想要的内容。你说“写入”——但是用户是否可以覆盖自己的文件?他们能改变现有的内容,还是只能追加?一旦写入,它就是只读的吗?也许你可以在评论中提供更详细的信息。
最后,SELinux和Grsecurity提供了更多的控制,但那是一个完全不同的问题。设置可能会相当复杂。
setfacl --set u::rwxs,g::rwx /controlled
(其中"/controlled"是要修改的文件夹)时遇到了各种错误。可以尝试使用setfacl -m u::rwx,g::rwx /controlled
来解决问题。 - Buttle Butkus对于这个目录,它的权限应该是r-x。
而其中的文件应该具有rw-权限。
这是因为只有当一个文件的权限允许写入时才能进行写入操作,但只有该文件所在的目录的权限允许写入时,该文件才能被删除。
无论如何,确保在您特定的上下文中,使用0字节文件覆盖不等于删除文件。