NFS4:rpc.idmapd 或 nfs.idmap 呼叫?
https://www.kernel.org/doc/Documentation/filesystems/nfs/idmapper.txt狀態:
The file /etc/request-key.conf will need to be modified so /sbin/request-key can direct the upcall. The following line should be added: #OP TYPE DESCRIPTION CALLOUT INFO PROGRAM ARG1 ARG2 ARG3 ... #====== ======= =============== =============== =============================== create id_resolver * * /usr/sbin/nfs.idmap %k %d 600 This will direct all id_resolver requests to the program /usr/sbin/nfs.idmap.
自 Ubuntu 12.04 起,request-key.conf 中不存在此條目。我已經看到了幾個不同的相互矛盾的報告:
- nfs.idmap upcall 已過時,應改為使用 rpc.idmapd
- rpc.idmapd 已過時,應改為使用 nfs.idmap
- 核心會自動在兩者之間切換(它更喜歡哪個?)
任何人都可以對此有所了解嗎?
謝謝。
從調試中可以清楚地看出,Ubuntu 使用的是出廠時的 rpc.idmap(至少到 12.04)。
考古學:您需要一個帶有 nfsidmap 機制的核心(選項是“新”idmap - 因此我假設它是 rpc.idmap 的替代品)才能使 nfsidmap 呼叫正常工作。此外,http ://www.mjmwired.net/kernel/Documentation/filesystems/nfs/idmapper.txt 包含建議首先呼叫 rpcidmap 的核心文件(寫作時為 3.5),我認為這表明方法的偏好(您的文件似乎是舊副本)。
實用資訊:nfsidmapp 是更廣泛的請求密鑰安全系統的一部分,該系統是核心中相對較新的補充(“相對”,因為它已經存在一年多,但 Ubuntu 發布週期相當短)。看來 Ubuntu 還不支持整個機制。
nfs-utils 包包括 rpc.idmap 和 nfsidmap 二進製文件,當然,nfsidmap 的文件被寫成“你正在使用的這個東西,它就像這樣工作”。所以不幸的是,命令的文件並沒有給你任何關於實際設置的線索。
(據我所知,rpc.idmap 不會在 ‘open’ 呼叫中翻譯 ID,僅在 ‘stat’ 和類似情況下翻譯 ID,導致您無法編寫 stat 表示您擁有的文件的奇怪情況,但可以寫入沒人擁有的文件…我不知道 nfsidmap 是否會改變這種行為。)