如何让Windows正确修改CIFS / ZFS ACL


0

我有一个FreeNAS(FreeBSD)系统,它有一个由ZFS文件系统支持的CIFS共享(称为“库”)。根据FreeNAS GUI设置共享以使用“Windows / Mac”ACL,我认为这意味着NFSv4 ACL。

这就是我希望基本ACL的方式:

nas# getfacl /mnt/big/library/test
# file: /mnt/big/library/test
# owner: DOMAIN\administrator
# group: DOMAIN\domain admins
            owner@:rwxpDdaARWcCo-:fd----:allow
            group@:rwxpDdaARWcCo-:fd----:allow
         everyone@:r-x---a-R-c---:fd----:allow

从Windows 7 GUI中显示“DOMAIN \ administrator”和“DOMAIN \ Domain Admins”的“完全控制”,以及从共享的根继承的“Everyone”的“Read& execute”。 Windows甚至正确地将所有者识别为“管理员”。

我有两个问题,我认为可能与此有关。

首先,如果我在现有对象(文件或目录)上修改或创建ACE,Windows将替换 owner@ ACE一个用于 group:DOMAIN\administrator 在添加的情况下,它会为其创建一个组ACE group:DOMAIN\joe 为用户。我并不介意它认为用户是一个组(只要它有效),但是替换所有者ACE是一件痛苦的事情,因为现在如果我更改了对象的所有者,ACE将仍然存在于之前所有者。

第二个烦恼是在创建新对象时,ACL看起来像这样:

nas2# getfacl /mnt/big/library/test/New\ folder/
# file: /mnt/big/library/test/New folder/
# owner: DOMAIN\joe
# group: DOMAIN\domain users
            owner@:rwxpDdaARWcCo-:fd----:allow
            group@:rwxpDdaARWcCo-:fd----:allow
         everyone@:r-x---a-R-c---:fd----:allow

虽然它似乎正确地继承了ACE,但它没有保留父目录的所有者或组。有没有办法用包含目录的属性创建它?

看着 setfacl联机帮助页 它指出:

 -d      The operations apply to the default ACL entries instead of access
         ACL entries.  Currently only directories may have default ACL's.
         This option is not applicable to NFSv4 ACLs.

对我来说意味着NFSv4 ACL不支持默认ACE,这似乎是我需要解决的第二个问题。有谁知道这是否正确?


对这个问题的标题道歉,我真的想不出简洁的方法来表达这个问题。
Styne666

Answers:


2

所以我没有真正处理过任何这方面的问题,而且我可能会认真对待错误,但这里有一些可以解释它的内容:

  • NFSv4 ACL类似但是 不完全的 像Windows / CIFS / NTFS ACL。

    例如,Windows ACL格式根本不区分“用户”或“组”或“特殊”SID。由于NAS不知道您的Windows系统具有哪些帐户,因此无法确定哪些SID是用户以及哪些是组 - 它必须猜测。

  • 但是,虽然NFSv4 ACL不支持POSIX样式的“默认ACE”,但它们 支持Windows / CIFS风格的“可继承”ACE;也就是说,每个条目都可以是可继承的。

    在FreeBSD中 getfacl,你可以看到 fd 对应于“可由文件继承”和“可由目录继承”的标志。

    还有一个“仅继承”标志 i,它实际上与POSIX ACL中的“默认”ACE完全等效 - 也就是说,ACE只是继承,但不用于目录本身。

  • 创建文件时,它是 总是 由创建它的用户拥有。它不可继承。

    如果CIFS服务器运行的是Windows Server,则可以选择将内置的“管理员”组设为默认文件所有者(再次说明它如何让所有者成为用户或组,并且缺少'组所有权“)。


1
“NAS不知道你的Windows系统有什么帐户” - 实际上它确实如此。 NAS是用于“DOMAIN”的Samba AD DC,Windows 7机器也加入了该区域。因此,理论上它可以完全访问,以确定哪些SID是用户,哪些是组。我实际上是在一个稍微不同的环境中再次看同样的问题所以希望我能从2014年以来学到的东西中取得更好的进展!
Styne666
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.