我有一个名为“成员”的目录下面有文件夹/文件。 我如何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和权限位。