NFS 伺服器上出現以下錯誤,您能告訴我如何解決此問題嗎?
細節:
系統:CentOS 版本 6.4,NFS:nfs-utils-1.2.3-36
# cat /etc/idmapd.conf
[General]
Domain = domain.com
[Mapping]
Nobody-User = nobody
Nobody-Group = nobody
[Translation]
Method = nsswitch
Sep 3 08:25:28 snode1 rpc.idmapd[1382]: nss_getpwnam: name '0' does not map into domain 'domain.com'
Sep 3 08:25:29 snode1 rpc.idmapd[1382]: nss_getpwnam: name '500' does not map into domain 'domain.com'
編輯:2013 年 9 月 3 日 10:41
請注意,我使用的是 NFSv4,這些錯誤僅出現在 NFS 伺服器上(而不是 NFS 用戶端)。
伺服器:
# cat /etc/sysconfig/nfs
MOUNTD_NFS_V2="no"
MOUNTD_NFS_V3="no"
...
RPCNFSDARGS="-N 2 -N 3"
客戶:
# cat /etc/fstab
server:/ /data nfs4 defaults,hard,intr,timeo=15,_netdev,noatime,nodiratime,nosuid 0 0
編輯:2014 年英國夏令時間 6 月 11 日星期三 14:52:50
# getent passwd "0" | cut -d: -f1
root
# getent passwd "500" | cut -d: -f1
user1
-
# grep "^passwd" /etc/nsswitch.conf
passwd: files
答案1
我將進行一些猜測。如果您在 NFS 伺服器上解析 UID“0”或“500”,您會得到什麼?他們是本地帳戶嗎?
我之所以這麼建議,是因為 NFSv4 在設計上引用了網域內的帳戶名稱,並試圖避免先前版本的 NFS 中的「本地身份驗證」問題。因此,它使用 idmapd(它會翻譯在 NFS 封包中傳遞的帳戶名稱)將使用者名稱翻譯為 UID/GID。
正如您所正確確定的那樣,這看起來就是這裡出現的問題 - 所以我的問題是,您使用的身份驗證網域是什麼,當您查詢它時,您是否得到 UID 0 和 500 的答案?
我見過類似的情況,例如,與客戶端相比,伺服器正在查看 LDAP(好吧,活動目錄)目錄的錯誤分支。因為它無法解析 UID/用戶名關係,所以它崩潰了,並將這些用戶轉換為「nobody」。
您已透過 nsswitch 配置了解析度 - nsswitch 對「passwd」有何說明? (主要在伺服器上,因為這似乎是問題存在的地方)。
編輯:好的,所以根據您的“passwd”,您已經將“文件”作為本地資料庫 - 例如/etc/passwd
。這表示您正在透過本機帳戶對應 UID/GID。你不應該曾經在 NFSv4 中使用 UID - 它應該是用戶名。
然而,谷歌搜尋給了我: http://www.spinics.net/lists/linux-nfs/msg38598.html
因此,下一個問題是 - 您是否使用“sys”身份驗證?我根據您的 fstab 猜測您是,此時 - 這似乎是預期的行為 - 您的客戶端正在使用“sys”,因此傳遞 UID/GID。 idmapd 抱怨因為他們不是有效使用者(他們是 UID)。
如果在客戶端上,您「觸摸」了一個 UID 500 或 0 的文件,那麼它在客戶端和伺服器上會是什麼樣子(ls -l 取得用戶名,ls -ln 取得 uid)?如果工作正常,這似乎是 NFSv3 Auth sys 和 NFSv4 之間向後相容性的產物,並且這些訊息是無害的。
您可以考慮升級到 Kerberos 身份驗證或類似身份驗證,但從經驗來看,這並不是一件簡單的事情。 (儘管有一些相當方便的優點)。我連結的該訊息(踪跡)意味著此錯誤訊息在更高版本的內核版本中停止彈出。
答案2
您似乎正在使用 NFSv3,它僅透過網路發送數位使用者和群組標識符。
為了讓 idmapd 運作,您需要使用 NFSv4,它會傳送 idmapper 可以理解的 user@domain 識別碼並對應到本機帳戶(因此您不需要在伺服器和用戶端上使用相同的 uid/gid)。
嘗試使用 -t 選項安裝該共用:
mount -t nfs4 server:/path /mountpoint
答案3
請檢查以下解決方案是否源自gentoo論壇幫你:
1. On the NFS server, /etc/hostname did not contain the FQDN, just the local hostname.
2. This particular client had an unconfigured /etc/idmapd.conf. It had Domain = localdomain instead of Domain = FQDN-minus-hostname.
對於您的設定來說,這看起來像是第二個選項。
Google搜尋確切的錯誤訊息「nss_getpwnam:名稱'0'未對應到網域」為您提供了大量可能對您有所幫助的結果(只是指出了最有希望的)