想象一下以下文件夹结构
../文档
../文档/模板
我有两个用户组:
- 编辑
- 经理人
两个组的用户都应该能够
- 创建新文件
- 修改任何文件
- 删除任何文件
在../文档中。
两个组还应该能够读取 ../documents/templates 中的任何文件。
只有“管理员”组中的用户才可以
- 创建新文件
- 修改任何文件
- 删除任何文件
在../文档/模板中。
目录“../documents/templates”对于两个组来说都应该是不可删除的!
我怎样才能做到这一点?我得出的结论是,这对于 Linux 来说是不可能的(即使使用 POSIX ACL),因为您需要为“文档”设置 g=rwx,这将允许两个组的用户创建/删除/修改任何该目录中的文件...但是 +w 还允许删除子目录“templates”,而且我不知道有什么方法可以否认这一点。
答案1
../documents/templates
如果其中包含其他内容,任何人都无法删除。因此,您可以创建一个../documents/templates/.hidden
具有000
权限的子目录,并在其中放入一个空文件(好吧,前显然,设置000
权限)。然后rmdir ../documents/templates
就会失败,同样会失败rmdir ../documents/templates/.hidden
。
编辑:借用另一个已删除的答案,如果您是超级用户,您可以这样做,这更简单一些:
cd ../documents/templates
touch .locked
chattr +i .locked
(chattr
需要以超级用户身份运行。)