Samba

如何將 SAMBA 文件伺服器配置為 Windows 外觀?

  • September 16, 2015

我在 Active Directory (W2k8R2 DC) 環境中使用 openfiler 設備。我想讓我的共享對我的使用者來說盡可能看起來像 Windows 共享。大多數事情都很好,但有些事情會讓我發瘋。ATM 我最大的問題是使 Windows 客戶端看到的 ACL 清晰:

Windows ACL 編輯器 Windows ACL 編輯器

如您所見,有EveryonenobodyCREATOR OWNERCREATOR 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

延伸閱讀

https://wiki.samba.org/index.php/Shares_with_Windows_ACLs

引用自:https://serverfault.com/questions/451064