我很难理解 ACL 在 ZFS 上的工作原理与在 Windows NTFS 系统上的工作原理有何不同。(特别是,我使用的是 TrueNAS 12。)
我创建了一个 SMB 共享(“smbtest”),并授予用户joe
可继承的修改权限。然后,在该共享中,我触摸一个文件a
,它看起来像这样:
root@nisaba[/mnt/Pool1/smbtest]# getfacl a
# file: a
# owner: root
# group: wheel
owner@:rwxpDdaARWcCos:------I:allow
group@:rwxpDdaARWcCos:------I:allow
user:joe:rwxpDdaARWc--s:------I:allow
everyone@:--------------:------I:allow
看起来很棒。
现在我返回 GUI 并授予用户mary
可继承的修改权限。然后我触摸一个文件b
,它看起来像这样:
root@nisaba[/mnt/Pool1/smbtest]# getfacl b
# file: b
# owner: root
# group: wheel
owner@:rwxpDdaARWcCos:------I:allow
group@:rwxpDdaARWcCos:------I:allow
user:joe:rwxpDdaARWc--s:------I:allow
user:mary:rwxpDdaARWc--s:------I:allow
everyone@:--------------:------I:allow
很好。现在我们再看a
一下:
root@nisaba[/mnt/Pool1/smbtest]# getfacl a
# file: a
# owner: root
# group: wheel
owner@:rwxpDdaARWcCos:------I:allow
group@:rwxpDdaARWcCos:------I:allow
user:joe:rwxpDdaARWc--s:------I:allow
everyone@:--------------:------I:allow
它没有改变。这与我习惯的 SMB 共享工作方式之间存在重大差异。如果我在 Windows 服务器上执行此操作,在修改顶层目录的权限后smbtest
,上的权限a
将与上的权限相同b
,因为对象上的权限是继承的。在 NTFS 中,继承不是一次性交易 - 并不是在创建对象时继承它们,而是在权限本质上与它们继承自的对象符号链接的意义上继承它们。
看来这里的情况并非如此?如果不是,解决方法是什么?当然,如果您有一个包含数千万个文件的共享,并且想要向其中添加新的 ACL 条目,那么您不必将该更改递归应用于数千万个文件,而是(如 NTFS 中的情况)仅应用于它们都动态继承的一个对象?
或者我做错了什么?