当我安装 CIFS 共享时,vers=1.0
我可以getcifsacl
成功执行。
# mount -t cifs //example.com/Users/milo /mnt/cifs -o vers=1.0
# getcifsacl /mnt/cifs/file.png
REVISION:0x1
CONTROL:0x8504
OWNER:S-1-5-21-1111111111-222222222-33333333-11824
GROUP:S-1-5-21-1111111111-222222222-33333333-513
ACL:S-1-5-21-1111111111-222222222-33333333-11824:ALLOWED/I/FULL
ACL:S-1-5-21-1111111111-222222222-33333333-3200:ALLOWED/I/FULL
ACL:NT Authority\SYSTEM:ALLOWED/I/FULL
但是当我使用vers=2.0
、或2.1
或安装时3.0
,ACL 读取失败。
getxattr error: 95
REVISION:0x0
CONTROL:0x0
操作系统是 Debian Stretch (9.6),cifs-utils 包 2:6.7-1。CIFS 共享来自 Nettapp 数据存储。从 Windows XP、8、10 安装运行正常。
为什么getcifsacl
取决于 SMB 协议版本?我可以通过较新的 SMB 协议读取 ACL 吗?
答案1
为了使其工作,需要更新的内核和更新的 cifs-utils。
使用 mount 版本 2.0、2.1 或 3.0读取 ACLgetcifsacl
并进行设置,可与内核(Debian Strech 的反向移植)和 cifs-utils 版本(git 标签)配合使用。所有实用程序也适用于内核 4.20.4。setcifsacl
4.19.0-0.bpo.1-amd64
cifs-utils-6.8
我在 samba-technical 邮件列表中收到了解决方案提示:https://lists.samba.org/archive/samba-technical/2019-January/132176.html