我有一台運行 PC-BSD (FreeBSD) 10 和純 ZFS 儲存的伺服器。我已經使用 Warden 建立了一個監獄並安裝了 Samba 4。我在我的設定中使用了兩個 zpool。第一個 zpool 有一對 1TB 硬碟的鏡像,它包含作業系統的所有磁碟區以及我設定的任何監獄。第二台 zpool 有四對 4TB 驅動器,提供大容量儲存。從第二個 zpool 分配的磁碟區被監禁並安裝在我為 Samba 設置的監獄中。除了 ACL 之外,此設定的所有內容都運作良好。我在 smb4.conf 檔案中包含了以下選項,如果我理解正確的話,應該允許 Samba 使用 ZFS ACL 來儲存 Windows 權限:
vfs 物件 = zfsacl
nfs4:mode = 特殊
mfs4:acedup = 合併
nfs4:chwon = yes
我還在 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 模組