NFS 如何確定可以訪問哪些 Kerberos 憑據/主體?
我正在使用 Kerberos 設置 NFS 並遵循各種指南,例如NFSv4 with Kerberos on Ubuntu Wiki和How To Use Kerberos to Control Access to NFS Network Shares等。所有指南都遵循相同的基本模式:
- 設置 KDC
- 為 NFS 伺服器創建一個基於密鑰的主體,
nfs/nfs-server
並確保這些密鑰位於NFS 伺服器/etc/krb5.keytab
的文件中- 為 NFS 客戶端創建一個基於密鑰的主體,
nfs/nfs-client
並確保這些密鑰位於NFS 客戶端/etc/krb5.keytab
的文件中下一步是什麼讓我感到困惑。一旦
/etc/exports
在 NFS 伺服器上更改為…/nfs/some-dir [ip-address](rw,sec=krb5p,all_squash,sync)
… NFS 伺服器如何知道哪個 Kerberos 主體已分配給它自己?更基本的 - NFS 伺服器如何知道已添加到哪個 Kerberos 領域?此外,NFS 伺服器如何知道允許訪問哪些 Kerberos 主體?領域中可能有許多 Kerberos 使用者/主體,並且不應允許所有使用者/主體訪問特定的 NFS 導出。
同樣,一旦在 NFS 客戶端上執行以下操作…
mount -t nfs4 -o sec=krb5p [ip-address]:/nfs/some-dir /mnt/some-dir
… NFS 客戶端如何知道在與 NFS 伺服器通信時使用哪個 Kerberos 主體/密鑰?
/etc/krb5.keytab
和文件中是否有一些隱含的魔法/etc/krb5.conf
?
kerberized NFS(通常是任何 kerberized 服務)使用幾個發現選項來找出要使用的 kerberos 領域。第一個地方是
/etc/krb5.conf
您可以明確指定要使用的預設領域:[libdefaults] ... default_realm = YOUR.REALM
如果未指定任何內容,則客戶端可以向 DNS 伺服器查詢 kerberos 服務記錄。最後,使用域名。NFS 伺服器將掃描
/etc/krb5.keytab
文件以查找適當的主機主體以用於 gss 握手。當最終使用者訪問 NFS 伺服器時,會為每個客戶端建立一個專用的 GSS 上下文。在伺服器端,您需要一個映射服務,通常是 nfsidmapd,它基於系統配置使用本地密碼文件的 LDAP 伺服器將 kerberos 主體映射到本地 uid/gids。授權基於 unix 權限或 ACL(如果已配置)進行。