如何禁止目录重命名或移动,同时允许在目录内创建文件?

如何禁止目录重命名或移动,同时允许在目录内创建文件?

目录结构示例:

 /userA-directory/
        freespace-for-userA
        /THE-UNMOVABLE-UNRENAMABLE-PROTECTED-DIR/
             userA-files
             /userA-directories/
             freespace-for-userA

我想授予某个特定用户 A 在受保护目录中的完全写入和创建权限,但不允许用户 A 重命名或移动该容器目录。 不触碰目录的名称或位置,但可以完全自由地访问目录。 而且用户 A 还拥有父目录。

实现这一目标的最佳方法是什么?

目前我能达到的解决方案水平是这样的(在@nobar 的帮助下):

如何禁止目录重命名,同时允许在同一目录内外进行文件创建操作?

答案1

如果我理解正确的话,你想做的事情很常见——这只是创建一个共享文件夹。

也许你忽略了重命名目录不是与修改该目录的内容受相同的权限控制——共享目录的名称在其父目录级别受到保护。

在最简单的情况下,您需要做的就是:

chmod o-w parent ## prevent others from modifying the parent directory
chmod o+rwx parent/THE-UNMOVABLE-UNRENAMABLE-PROTECTED-DIR ## others can write

但前面的内容将允许任何用户修改共享目录。对于更复杂的设置,您可以操纵目标目录的 OWNER 和/或 GROUP:

/parent -- OWNER:you, GROUP:you
   /THE-UNMOVABLE-UNRENAMABLE-PROTECTED-DIR/ -- OWNER:userA, GROUP:userA
      /userA-files-and-directories/ -- OWNER:userA, GROUP:userA

使用chown和/或chmod来操作 的属性THE-UNMOVABLE-UNRENAMABLE-PROTECTED-DIR。您可以使用 查看属性ls -l

您可能选择将 OWNER 和 GROUP 设置为单独的值,但这可能仅在您想要允许多个用户同时控制谁有访问权限时才是必要的。

相关内容