Authentication

SMB 與 NFS 身份驗證

  • May 20, 2014

誰能簡要描述一下 SMB 身份驗證和 NFS v.3 身份驗證之間的最大區別是什麼?

我認為在 SMB 中它基於使用者的登錄名和密碼,而在 NFS 中它基於主機身份驗證。

你基本上擁有它。

使用者與機器與共享身份驗證

SMB/CIFS 在每個會話都映射到一個使用者的每個會話中基於某種使用者憑據(無論是 KRB 令牌、使用者/密碼對還是您擁有的)的訪問。NFSv3 使用基於主機的身份驗證,其中給定遠端電腦的所有使用者共享相同的連接。SMB/CIFS,特別是 Samba 實現,如果您需要該功能,還允許基於主機的允許/拒絕;視窗文件伺服器可能也可以,如果不在文件伺服器子系統中,防火牆將處理它。

SMB/CIFS 還實現了基於共享的身份驗證,其中共享有自己的密碼。

NFSv4 可以配置為通過 kerberos 使用每使用者身份驗證。

信任模型

NFSv3 強烈依賴遠端機器通過希望遠端在請求中發送真實的、跨機器一致的數字 ID 來強制執行權限,而 SMB/CIFS 基於連接(會話)身份驗證的遠端使用者在本地磁碟上強制執行權限。

因此,在 NFSv3 中,如果使用者在遠端機器上具有 root 權限,他們通常(即預設情況下)對整個 NFSv3 共享具有隻讀 root 訪問權限,並且可以模擬任何其他使用者 ID。對於單使用者電腦的共享,NFS 使用 all_squash 作為解決方法,但這是針對每個 IP 的。

另一方面,大多數類 unix 的 smb.mount 實現(linux pre-3.3、freebsd、solaris)不支持系統範圍的多會話(多使用者)掛載,因此在掛載遠端 SMB 文件系統時,系統的會話為只有使用者在安裝時設置,即。所有使用者都使用掛載時設置的使用者名權限進行操作。Linux 3.3 及更高版本有 cifscreds 來緩解,並且有可用的 FUSE SMB/CIFS 實現。正如預期的那樣,這對於 Windows 客戶端來說從來都不是問題。

身份映射

同樣在 NFSv3 中,您的數字 UID 必須精確映射:客戶端電腦上的使用者 1001 將被授予伺服器上使用者 1001 的權限;沒有文本使用者名映射。由於 SMB/CIFS 將 ID 綁定到會話,因此映射是自動的;您的共享 UID 與您的憑據匹配。

NFSv4 有一個用於 ID 映射 GSS 域經過身份驗證的使用者的守護程序,但如果您尚未部署 GSS 域,則同步您的 UID 可能更容易。

ACL

NFSv3 和更早版本在 ACL 支持下可能有點粗略(xattrs 就出來了)。NFS 的“POSIX ACL”是在邊帶 RPC 中實現的(不在主協議中),因此還有一些可能出錯的地方,並且並非所有作業系統都支持 NFS 的 POSIX ACL。

SMB/CIFS 通常對 ACL 沒有任何問題。如果您需要修改它們,windows 和類 unix 客戶端可以使用其標準機制(分別為 GUI 和 setfacl)修改 Samba 共享。我不確定類 unix 客戶端是否可以修改 Windows 文件伺服器共享上的類 ACL 權限。

NFSv4 具有內置的 ACL。

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