Ubuntu

nfs4_disable_idmapping 參數究竟是做什麼的?

  • April 2, 2019

我一直在嘗試 NFSv4 中的使用者/組 ID 映射(翻譯)。我想要實現的是基於名稱的 ID 轉換,它獨立於伺服器和客戶端上的實際 UID/GID。

許多指南和文章提到,要使 ID 映射正常工作,您必須在客戶端模組和伺服器模組中將nfs4_disable_idmapping參數設置為0(又名 N)。但是,我沒有找到有關此參數的確切作用的任何資訊或文件。nfs``nfsd

作為一個實驗,我配置了 NFSv4 伺服器和客戶端(使用sec=krb5),並故意將這些參數保留為預設值(禁用映射)。我可以驗證映射在伺服器上被禁用:

$ cat /sys/module/nfsd/parameters/nfs4_disable_idmapping 
Y

在客戶端:

$ cat /sys/module/nfs/parameters/nfs4_disable_idmapping 
Y

我在伺服器上創建了使用者bob(uid=1002),在客戶端上創建了使用者。如您所見,UID 不匹配,但使用者仍被正確映射。使用者在伺服器上創建的文件在伺服器上被視為擁有,反之亦然。sam(uid=1001)``bob(uid=1003)``sam(uid=1004)``bob``bob

此外,如果我查看客戶端上的日誌:

nfsidmap[1874]: key: 0x322c739a type: uid value: bob@home.lan timeout 600                                            
nfsidmap[1874]: nfs4_name_to_uid: calling nsswitch->name_to_uid                                                      
nfsidmap[1874]: nss_getpwnam: name 'bob@home.lan' domain 'home.lan': resulting localname 'bob'                       
nfsidmap[1874]: nfs4_name_to_uid: nsswitch->name_to_uid returned 0                                                   
nfsidmap[1874]: nfs4_name_to_uid: final return value is 0       

在伺服器上:

rpc.idmapd[1717]: nfsdcb: authbuf=gss/krb5p authtype=user                                                                                                                   
rpc.idmapd[1717]: nfs4_uid_to_name: calling nsswitch->uid_to_name                                                                                                           
rpc.idmapd[1717]: nfs4_uid_to_name: nsswitch->uid_to_name returned 0                                                                                                        
rpc.idmapd[1717]: nfs4_uid_to_name: final return value is 0                                                                                                                 
rpc.idmapd[1717]: Server : (user) id "1002" -> name "bob@home.lan"  

他們都建議 ID 映射確實是*“按名稱”而不是“按 id”*工作。

所以我的問題是:nfs4_disable_idmapping如果它似乎對 ID 映射沒有任何可觀察到的影響,那麼參數是什麼?

你遇到了一個糟糕的測試案例。根據核心文件 nfs4_disable_idmapping,選項僅在使用時才有意義sec=sys

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