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


20

我正在设置一台新服务器,并希望对ACL赋予chown:chgrp:chmod样式权限。

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

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

如果我的目录布局如下所示

test/
   subtest/
   subtest.txt

然后我执行

setfacl -Rm d:u:foo:rwX test

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

我想我可以使用find + exec来解决它,但是我计划使用此服务器来训练其他一些管理员,并且我想使它尽可能简单,以便我们不会挂在一些更高级的上约定。

谢谢

Answers:


43

尝试:

setfacl -Rm u:foo:rwX,d:u:foo:rwX test

修改当前ACL和默认ACL。我相信“ d:”仅会影响目录的(d)故障ACL,并且不会影响文件。然后,如果您在目录中创建一个文件,它将通过默认值继承其父目录的ACL。


这使得即使感觉有点多余感
乔·霍洛威

1
这是否也适用于删除访问控制。可能有以下效果:sudo setfacl -Rx g:gid路径

为什么在-R-m标志之间更改位置会中断命令?
pkaramol,

@pkaramol:因为该-m选项接受一个参数(u:foo:rwX,d:u:foo:rwX在这种情况下为ACL规范),并且切换选项的顺序会将其与其参数分开。也可能setfacl是编码期望其主要选项为第一。
暂停,直到另行通知。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.