Samba

OS X:在綁定到 AD 的 Samba 伺服器上使用 SMB 共享時,Finder 錯誤 -36

  • November 28, 2016

我們正在考慮在 Debian (5.0.3) 上為我們的 mac 客戶端部署 SMB 家庭,而不是購買四個新的 Xserve。我們的測試伺服器已建構並正常執行。Windows 客戶端表現完美,但我們遇到了 OS X(10.6.x 和 10.5.x)的問題。由於採用這種方式時會出現一大堆其他問題,我們將採用這條路線而不是 Windows 文件伺服器。

具體來說,在打開 unix 擴展並且遠端伺服器綁定到 AD 的情況下掛載 SMB 共享時,finder 無法將文件保存在共享上,而是觸摸文件然後以 -36 IO 錯誤轟炸,文件夾創建很好。在終端中復製文件表現良好,問題似乎僅限於查找器。

問題出現了(我認為),因為在使用 unix 擴展時會傳遞遠端 UID/GID。OS X 使用自己的 winbind idmap (odsam) 從 AD 使用者和組中計算出有效的 UID/GID,而我們在伺服器上使用了一個rid map。因此,發現者選擇履行的所有權不匹配。

OS X 似乎如何處理這個問題是在文件權限級別使用遠端 uid 和 gid(見下文),然後設置一個 OS X acl 授予本地 uid/gid 以對文件具有適當的權限。我認為查找器會觸摸文件(由於 ACL,核心允許這樣做),然後檢查文件系統權限並因 IO 錯誤而退出。

在客戶端

fc-003353-d:homes2 root# ls -led test/
drwx------+ 2 135978  100513  16384 Feb  3 15:14 test/
0: user:jfrench allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit
1: group:ARTS\domain users allow 
2: group:everyone allow 
3: group:owner allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit,only_inherit
4: group:group allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit,only_inherit
5: group:everyone allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit,only_inherit

我們嘗試了以下方法,但沒有任何運氣:

  • 設置 Linux 端文件所有者以匹配 OS X GID/UID
  • 在授予 OS X GID/UID 權限的 linux 文件系統上添加 ACL
  • 禁用擴展屬性
  • 在客戶端的 /etc/nsmb.conf 中設置 steams=no

我們目前正在執行一種解決方法,即僅關閉 unix 擴展,這會強制 mac 僅以本地使用者身份安裝共享,並具有 u=rwx 權限。這適用於大多數事情,但會導致一些期望某些燙髮以微妙方式破壞的應用程序。最壞的情況是我們將繼續以這種方式執行,但我們希望啟用 unix 擴展。

問候。


相關 SMB 配置如下:

[global]
       workgroup = ARTS
       realm = *snip*
       security = ADS
       password server = *snip*
       unix extensions = yes
       panic action = /usr/share/panic-action %d
       idmap backend = rid:ARTS=100000-10000000
       idmap uid = 100000-10000000
       idmap gid = 100000-10000000
       winbind enum users = Yes
       winbind enum groups = Yes
       veto files = /lost+found/aquota.*/
       hide files = /desktop.ini/$RECYCLE.BIN/.*/AppData/Library/
       ea support = yes
       store dos attributes = yes
       map system = no
       map archive = no
       map readonly = no

該問題可能是由於 Finder 在將資源分叉作為擴展屬性處理的方式中存在錯誤。

我會嘗試:

EA支持=否

這可能會導致 ._ 文件,但在 Apple 足夠關心他們的文件管理器可互操作之前,這是您必須處理的。

編輯:我剛剛注意到你確實嘗試禁用它們。那是我遇到所有 Finder 問題的地方。經過一些簡短的搜尋後,似乎關閉 unix 擴展是唯一報告的修復。

您可能需要查看命名流設置。蘋果有一篇文章。“Mac OS X v10.5、v10.6:關於安裝在 SMB 的 NAS、Mac OS X 和 Windows 伺服器上的命名流;可能會出現“-36”或“-50”警報”

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