如何让 setfacl 在 Linux 上递归设置 ACL 权限?

Joe*_*way 27 linux permissions

我正在设置一个新服务器,并希望通过 chown:chgrp:chmod 样式权限给 ACL 一个机会。

setfacl 的手册页指出“-R”选项可用于在文件和目录上递归设置 ACL。

-R, --recursive 递归地将操作应用于所有文件和目录。此选项不能与“--restore”混合使用。

如果我的目录布局看起来像这样

test/
   subtest/
   subtest.txt
Run Code Online (Sandbox Code Playgroud)

我执行

setfacl -Rm d:u:foo:rwX test
Run Code Online (Sandbox Code Playgroud)

ACL 对“subtest”目录生效,但对 subtest.txt 文件无效。

我想我可以使用 find + exec 来解决这个问题,但我计划使用这个服务器来训练其他一些管理员,我想让它尽可能简单,这样我们就不会被一些更高级的东西所困扰公约。

谢谢

Den*_*son 57

尝试:

setfacl -Rm u:foo:rwX,d:u:foo:rwX test
Run Code Online (Sandbox Code Playgroud)

修改当前 ACL 以及默认值。我相信“d:”只会影响目录的 (d)eault ACL 而不会影响文件。然后,如果您在目录中创建一个文件,它会通过默认值继承其父目录的 ACL。

  • 更易读的命令版本:`setfacl --recursive --modify user:foo:rwX,default:user:foo:rwX test`。今天我了解到大写的 X 对于仅为文件夹而不是每个文件设置 eXecute 权限很重要。小写的 x 设置文件夹和文件的执行权限。 (5认同)