使用 Linux ACL,您可以让多个组对某个文件夹具有默认访问权限吗?我希望在不同的编码组 + 多个进程之间共享代码存储库。我的想法是,如果一个组中的用户在共享存储库内创建内容,即使所有者是该用户,默认权限也会传播到该新文件,其他用户仍然可以访问该内容。
这是我以 root 身份尝试的操作:
mkdir /tmp/temp chmod 770 /tmp/temp setfacl -dm g:www-data:rx,g:sambashare:rx /tmp/temp getfacl /tmp/temp # 文件:临时 # 所有者:root # 组:root 用户::rwx 组::rwx 其他:: - - 默认值:用户::rwx 默认:组::rwx 默认:组:www-数据:rx 默认:组:sambashare:rx 默认值:掩码::rwx 默认:其他::---
作为测试用户
ID uid=1004(测试用户) gid=1007(测试用户) groups=1007(测试用户),110(sambashare) cd /tmp/temp bash:cd:temp:权限被拒绝
显然它没有像我预期的那样工作。有人能帮我理解为什么它不工作以及如何解决这个问题吗?
PS 我正在设置默认组权限而不是常规组权限,因为这些权限应该传播给子组权限。
setfacl -mg:sambashare:rx /tmp/temp似乎可以授予访问权限。
谢谢。
答案1
尝试运行setfacl -Rdm g:www-data:r-x,g:sambashare:r-x /tmp/temp
和setfacl -Rm g:www-data:r-x,g:sambashare:r-x /tmp/temp
。选项 d 设置新文件和目录的默认值,但不会更改现有设置,因为只有 root:root 才有访问权限。-R 将方便地递归到现有目录中进行所需的更改。