如何將 SAMBA 文件伺服器配置為 Windows 外觀?
我在 Active Directory (W2k8R2 DC) 環境中使用 openfiler 設備。我想讓我的共享對我的使用者來說盡可能看起來像 Windows 共享。大多數事情都很好,但有些事情會讓我發瘋。ATM 我最大的問題是使 Windows 客戶端看到的 ACL 清晰:
Windows ACL 編輯器
如您所見,有Everyone、nobody、CREATOR OWNER和CREATOR GROUP的條目。我知道所有這些條目都是從我的 POSIX ACL 映射的,例如 owner:group:other。對於大多數 Windows 使用者來說,這只是令人困惑,尤其是每個人都嚇壞了一些人,因為他們認為每個人都可以訪問。我怎樣才能擺脫這些條目而只擁有:
- G-PM-PMFS01-ADM => 完全訪問
- L-PM-PMFS01-DEPOT-C => 更改/修改
- L-PM-PMFS01-DEPOT-R => 只讀
L-PM-PMFS01-DEPOT-R是 atm 唯一完全正確的組。G-PM-PMFS01-ADM以特殊形式列出,但它具有完全訪問權限,因為它是 POSIX 中的“主要組”。L-PM-PMFS01-DEPOT-C被列為具有完全訪問權限,因為它在 POSIX 上獲得了 rwx。我嘗試更改
acl map full control
,但將其設置為false
.所以我的問題是,我應該在我的 smb.conf 中設置什麼來使一個幾乎 100% 的 Windows 外觀(和感覺)類似 samba 的文件伺服器?
我知道這在 EMC 或 NetApp 的商業產品上是可能的,所以我認為應該有辦法。
smb.conf 的目前共享部分
[depot] comment = depot path = /mnt/vg1/v001/depot read only = no writeable = yes oplocks = yes level2 oplocks = yes force security mode = 0 dos filemode = yes dos filetime resolution = yes dos filetimes = yes fake directory create times = yes browseable = yes csc policy = manual veto oplock files = /*.mdb/*.MDB/*.dbf/*.DBF/ veto files = /*:Zone.Identifier:*/ create mode = 0770 directory mode = 2770 printable = no guest ok = no hosts allow = 172.16.10.0/24 172.16.30.0/24 172.16.10.0/24 hosts readonly allow = store dos attributes = yes map acl inherit = yes inherit acls = yes inherit owner = yes inherit permissions = yes
目前的getfacl:
# file: mnt/vg1/v001/depot/ # owner: nobody # group: g-pm-pmfs01-adm # flags: -s- user::rwx group::rwx group:l-pm-pmfs01-depot-c:rwx group:l-pm-pmfs01-depot-r:r-x mask::rwx other::--- default:user::rwx default:group::rwx default:group:l-pm-pmfs01-depot-c:rwx default:group:l-pm-pmfs01-depot-r:r-x default:mask::rwx default:other::---
問題
您正在使用 POSIX ACL 映射來處理 Samba 的 ACL。這是預設行為(並且已經存在很長時間了),但是如果您想要類似 Windows 的 ACL 體驗,這是做錯了,因為 POSIX ACL 缺少 NTFS ACL 的許多概念和權利,因此映射將總是保持不完整和“感覺不對”。
解決方案
您正在尋找的是vfs_acl_xattr。這是一種將功能完整的 NTFS ACL 儲存在擴展屬性中的方法,而不是嘗試將它們映射到 POSIX ACL。
缺點是相應的 xattr 僅由 Samba 評估,因此互操作性受到影響 - 通過 Samba 設置的 ACL 不再與您的 Linux 主機將看到的內容同步(並且可能通過 NFS 等其他方式公開),反之亦然 - 操縱 Linux ACL 不會修改 NTFS ACL。
法典
[global] vfs objects = acl_xattr map acl inherit = Yes store dos attributes = Yes
延伸閱讀