ACL - 所有新创建的文件自动使用相同的 ACL

ACL - 所有新创建的文件自动使用相同的 ACL

我想为例如设置 ACL。 /tmp/test 文件夹如下:

/tmp/test 所有者是用户“gaspar”,组“testgroup”的成员。
用户“testuser”也是组“testgroup”的成员,我只想向该用户+所有者(用户“gaspar”)授予 rwx 权限。
另外,我需要自动为 /tmp/test 中所有新创建的文件/目录设置相同的 acl。

当我像这样设置facl时:

setfacl -Rdm u:testuser:rwx,g:testgroup:-,o::- /tmp/test/

getfacl -p /tmp/test/授予权限:

# file: /tmp/test/
# owner: gaspar
# group: testgroup
user::rwx
group::---
other::---
default:user::rwx
default:user:testuser:rwx
default:group::---
default:group:testgroup:---
default:mask::rwx
default:other::---

然后用户“testuser”对 /tmp/test 文件夹没有权限。您能否建议问题出在哪里,我应该如何纠正?

当我像这样设置 acl 时(没有“d”选项),用户“testuser”拥有他应该拥有的权限,但显然新创建的文件/目录没有相同的 acl:

setfacl -Rm u:testuser:rwx,g:testgroup:-,o::- /tmp/test/

getfacl -p /tmp/test/

# file: /tmp/test/
# owner: gaspar
# group: testgroup
user::rwx
user:testuser:rwx
group::---
group:testgroup:---
mask::rwx
other::---

任何建议表示赞赏!

答案1

在您的系统上,重新启动后文件就会/tmp消失,对吗?也许这不是一个永久解决方案的好位置。在目录上设置 ACL 并将 ACL 应用于目录中的所有新文件系统对象时,请记住设置两个掩码:(1) 目录本身的掩码和 (2) 默认掩码(对于所有新文件系统对象) )。

setfacl -m u::rwx,g::r-x,o::--- /tmp/test
setfacl -d -m u::rwx,g::r-x,o::--- /tmp/test

上面的-m开关是 的掩码/tmp/test,并且-d开关使该掩码成为同一目录中所有新文件系统对象的默认掩码。它相当于 0750。也可以使用八进制值。

用户、组和其他掩码的工作方式相同:g:groupname:---或组合使用:u:username:---,g:groupname:---,o::---。不指定用户名或组名会将掩码应用于当前用户/组所有权。

请注意,并非所有软件都支持 ACL。例如,并非所有 SFTP/SCP 客户端都知道它们。

答案2

这是应该的。

man acl关于默认 ACL 有以下说法:

访问控制列表类型

每个对象都可以被认为具有与其关联的 ACL,该 ACL 控制对该对象的任意访问;该ACL称为访问ACL。此外,目录可能有关联的 ACL管理在该目录中创建的对象的初始访问 ACL;该 ACL 被称为默认ACL。

(强调我的)

您使用 ACL 指定的是,只有所有者对该目录具有 rwx 权限。目录上的默认 ACL 指定以下内容:

  • 其中创建的所有文件的 ACL 将设置为与父目录的默认 ACL 相同。
  • 其中创建的所有目录的默认 ACL 将设置为与父目录的默认 ACL 相同

如果您更改父目录的权限或添加启用访问的组/用户 ACL,则其中的任何文件都将按预期工作。

答案3

您需要了解什么是“user::rwx 和default:user::rwx”继承 acl 的默认部分。
有关更多信息,您需要阅读“man setfacl”,也许这个文档会帮助您:
https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.bpxb200/aclinhe.htm

相关内容