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

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

我有一个名为“members”的目录,其下有文件夹/文件。如何以递归方式将所有当前文件夹/文件以及将来在此创建的文件夹/文件设置为默认具有 775 权限,并分别属于所有者/组 nobody/admin?我启用了 ACL 并已安装,但似乎无法让 setfacl 命令正确执行此操作。有什么想法可以实现此操作吗?

答案1

我确实找到了一些可以满足我要求的东西,在这里分享,以便遇到此问题的任何人都可以尝试此解决方案:

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

R是递归的,这意味着该目录下的所有内容都将应用该规则。
d是默认的,这意味着对于该目录下创建的所有未来项目,都默认应用这些规则。 需要添加/修改规则。

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

答案2

按照您接受的答案...

您可以将这些命令组合在一起,如下所示:

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

答案3

Linux 上的 setfacl 具有用于操作默认权限的-d选项-k,这可能就是您正在寻找的(有关更多信息,请参阅 man)。

答案4

根据适当授权用户的要求,可以很容易地递归设置简单的 UNIX 权限、目录和文件的权限。但无法自动实施此操作。

您可以告诉用户使用 umask 0002 的设置,这有助于在 0775 处创建新文件(取决于应用程序)。但这不是强制执行的。

我的理解是,ACL 在 UNIX/Linux 系统上不会被继承。它们是根据需要设置的。

至于文件/目录所有权,你在这里几乎没有什么运气。

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

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

另一个(不推荐)方法是在处理这些文件时使用相同的用户 ID。这可以通过用户以自己的 UID 登录系统,然后使用 sudo 或 su 以该 ID 运行来实现。这仍然不是 100% 的,尤其是涉及 ACL 和权限位时。

相关内容