防止子目录被删除/强制执行目录结构

防止子目录被删除/强制执行目录结构

想象一下以下文件夹结构

../文档

../文档/模板

我有两个用户组:

  • 编辑
  • 经理人

两个组的用户都应该能够

  • 创建新文件
  • 修改任何文件
  • 删除任何文件

在../文档中。

两个组还应该能够读取 ../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需要以超级用户身份运行。)

相关内容