如果你無法在綁定 Open Directory 的 Mac 上裝載 SMB 共享點
你可能會因為 SMB 3 安全需求的關係,而無法使用 SMB 裝載共享點。
檢查連線設定
伺服器訊息區塊(SMB)3 是連接 macOS 中伺服器的預設方式。它會在認證後要求連線執行驗證協調要求。除非是以訪客或匿名方式登入,否則所有 SMB 3 階段作業都必須要簽署。
你可能有個 macOS 檔案伺服器是 Open Directory 用戶端,並以匿名方式綁定至輕量級目錄存取協定(LDAP)伺服器。若是如此,請使用以下其中一個方式來連線:
連線到 LDAP 伺服器時,請使用認證綁定
將檔案伺服器的角色更改為 Open Directory 複本。這麼做也會在伺服器上建立 Kerberos。
停用用戶端上的驗證協調要求。
將你的 SMB 伺服器或用戶端設定為僅使用 SMB 2。
瞭解階段作業簽署
SMB 3 的階段作業簽署,必須要以綁定的電腦來存取目錄伺服器中每一個使用者的 md4(密碼)。也因此,SMB 3 只會授予用戶端連線給「受信任」的電腦,也就是使用目錄管理者(diradmin)認證資訊來進行認證及綁定(authbound)的電腦。
你可能希望使用者以某個目錄伺服器中的帳號進行認證,但有時 diradmin 會無法將你的伺服器認證並綁定至該目錄伺服器。這種情況下,你可以停用用戶端的驗證協調要求,或是修改伺服器,讓它只接受安全性較低的 SMB 2 連線。如要這麼做,請修改 SMB 伺服器、用戶端或兩者的設定。
停用用戶端上的驗證協調要求
如果你停用驗證協調,遭受攔截式攻擊的機率將會提高。建議你只在用戶端與伺服器皆位於安全網路時,才停用驗證協調要求。
如要設定 /etc 目錄中 nsmb.conf 檔案的 validate_neg_off 設定值,請使用文字編輯器或「終端機」進行。更多用戶端 SMB 設定選項,請參閱 nsmb.conf 的說明頁。
設定 nsmb.conf 停用驗證協調時,看起來會是這個樣子:
[default]
validate_neg_off=yes
設定「macOS 伺服器」拒絕 SMB 3 連線
驗證協調要求這項 SMB 3 功能是由用戶端提出。若要避免用戶端提出這類要求,你可以設定「macOS 伺服器」只接受 SMB 2 連線。「伺服器方言」(Server Dialect)是由伺服器偏好設定中的某個位元欄位所控制,這個位元欄位的關鍵字是 ProtocolVersionMap,它只使用三個位元:
值 | 涵意 |
1 | 支援 SMB 1 |
2 | 支援 SMB 2 |
4 | 支援 SMB 3 |
如要支援多個方言,請組合位元。
以下範例是將 ProtocolVersionMap 設為允許 SMB 2。為達到此目的,其中的 ProtocolVersionMap 要設為「2」。
sudo scutil --prefs com.apple.smb.server.plist
get /
d.add ProtocolVersionMap # 2
set /
commit
apply
quit