linux / setfacl – 将父目录中的所有当前/将来的文件/目录设置为指定所有者/组的775

我有一个名为“成员”的目录下面有文件夹/文件。 我如何recursion设置所有当前的文件夹/文件,以及在那里创build的任何未来的文件夹默认拥有775个权限,并分别属于所有者/组nobody / admin? 我启用ACL,挂载,但似乎无法得到setfacl命令正确执行此操作。 任何想法如何做到这一点?

实际上,我发现了一些迄今为止所要求的内容,在此分享,以便遇到此问题的任何人都可以尝试此解决scheme:

sudo setfacl -Rdm g:groupnamehere:rwx /base/path/members/ sudo setfacl -Rm g:groupnamehere:rwx /base/path/members/ 

R是recursion的,这意味着该目录下的所有内容都将应用该规则。
d是默认的,这意味着在该目录下创build的所有将来的项目,都默认应用这些规则。 m是需要添加/修改规则。

第一个命令是用于新项目(因此d),第二个命令是用于该文件夹下的旧/现有项目。 希望这可以帮助别人,因为这个东西有点复杂,不太直观。

去与你接受的答案…

您可以将这些命令组合在一起:

 sudo setfacl -Rm d:g:groupnamehere:rwx,g:groupnamehere:rwx /base/path/members/ 

Linux上的setfacl拥有-d-k选项来操作默认权限,这可能是你正在寻找的东西(参见man for more info)。

根据适当的授权用户的需求递交设置简单的UNIX权限,目录和文件的权限是很容易的。 这是不可能的自动强加这一点。

你可以告诉用户使用设置0002的umask,这有助于在0775(取决于应用)创build新的文件。 但这不是可执行的。

我的理解是ACL不能在UNIX / Linux系统上inheritance。 它们是根据需求设置的。

至于文件/目录的所有权,你在这里几乎不走运。

至于文件/目录组的所有权,通过设置目录set-gid位(即DIRECTORIES上的g + s),这确实会导致组的所有权被inheritance。

我在这种情况下所做的是执行一个定期的root cron脚本,将不合格的权限/所有权重置为这些目录中的标准。

另一个(不推荐)进程是在处理这些文件时使用相同的用户标识。 这可以通过用户在他自己的UID下login系统来完成,然后使用sudo或su作为id来运行。 这仍然不是100%,特别是关于ACL和权限位。