Ubuntu
nfs4_disable_idmapping 參數究竟是做什麼的?
我一直在嘗試 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
。