FreeBSD - Samba4 忽略 ZFS ACL

FreeBSD - Samba4 忽略 ZFS ACL

我有一台运行 PC-BSD (FreeBSD) 10 和纯 ZFS 存储的服务器。我已经使用 Warden 创建了一个 jail 并安装了 Samba 4。我已经配置了一个域,使用 ntvfs 和 rfc2307 选项,这是 FreeBSD+ZFS 设置的建议。我在我的设置中使用了两个 zpools。第一个 zpool 有一对镜像的 1TB 驱动器,它包含操作系统和我设置的任何 jails 的所有卷。第二个 zpool 有四对 4TB 驱动器,提供大容量存储。从第二个 zpool 分配的卷被关押并安装在我为 Samba 设置的 jail 中。除了 ACL 之外,此设置的所有功能都运行良好。我已在 smb4.conf 文件中包括以下选项,如果我理解正确的话,这些选项应该允许 Samba 使用 ZFS ACL 来存储 Windows 权限:

vfs 对象 = zfsacl
nfs4:模式 = 特殊
mfs4:acedup = 合并
nfs4:chwon = 是

我还在 Samba 共享的所有 ZFS 卷上设置了 aclmode=passthrough 和 aclinherit=passthrough。但是,无论我如何尝试,ZFS ACL 都会被忽略。Samba 用户可见(我可以使用我的 Samba 用户名和密码登录,我的用户名出现在目录列表中),并且我可以使用 setfacl 命令为其他 Samba 用户分配文件的 ACL 权限。但是,Samba 完全忽略了 ZFS ACL,并且所有 Windows ACL 都存储在扩展属性 user.NTACL 中。我希望 Windows 权限存储在 ZFS ACL 中,以便通过 SSH 登录的用户和通过 Windows 访问共享的用户之间的访问保持一致。

我确信这只是因为我在某个地方遗漏了一些很小但至关重要的参数或选项,我希望有人能给我指点迷津。如果您需要有关我的系统的更多信息,请告诉我,我会发布。

编辑

好吧,经过几天的网上搜索,我似乎找到了问题所在——我使用的是 NTVFS,而不是 S3FS。几个月前,当我设置 Samba 服务器时,我遇到了域配置脚本因 ZFS 而失败的问题。解决方案是添加“--use-ntvfs”选项,正如许多不同的指南中提到的那样。这可能是我安装时 Samba4 最新版本的必要选项,但看起来 zfsacl 模块在我现在运行的版本(4.0.25)中不适用于 NTVFS。通过更改我的 smb4.conf 文件以使用 S3FS,zfsacl 模块突然开始发挥作用。

TL;DR - 使用 S3FS 而不是 NTVFS 和 zfsacl 模块

相关内容