File-Permissions
NFS4 w/o Kerberos:名稱映射有效,權限無效
我只是想在 NFS4 客戶端和 NFS4 伺服器之間“按使用者名映射”,當每個給定使用者名具有不同的 uid 時,無需設置 Kerberos。
情況:我的Linux機器(centos 7)訪問各種NFS4伺服器(執行centos 7)
- 沒有可用的 Kerberos 或 NIS 或 AD
- 每個伺服器都有不同的 dns 域(都與我的 linux box 的 DNS 域不同)
- 伺服器和我的 linux 客戶端具有不同步的 UID(每個使用者名“oracle”具有不同的本地 uid)
echo N > /sys/module/nfsd/parameters/nfs4_disable_idmapping
在伺服器和客戶端上完成- 名稱映射守護程序 rpcidmapd 在客戶端和伺服器上啟動
- 客戶端**/etc/idmapd.conf**為使用者提供靜態映射
- 安裝為 nfs4(sec=sys,因為沒有集中的 Kerberos/etc)可以工作
ls -l
顯示“正確”的使用者名和組名- 但是權限被忽略了,我必須設置 world rwx 來訪問/遍歷/寫入文件,為什麼?
背景問題:
- 哪一方(客戶端或伺服器)應該將名稱映射到 id?
- 我的客戶端上的 idmapd.conf 是否正確(例如遠端 NFS4 伺服器 DNS 域是 eh.loc):
[General] Verbosity = 7 [Mapping] [Translation] Method = static [Static] oracle@eh.loc = oracle oinstall@eh.loc = oinstall dba@eh.loc = dba
nfs id 映射存在很大的混淆。當字元串形式的主體(如 test@example.com)必須轉換為數字 id 時使用的映射,反之亦然。例如,這是在您執行ls -l時完成的。
但是,當您使用 sec=sys 掛載時,您顯然會這樣做,然後所有請求都使用客戶端的本地 UID 和 GID 進行身份驗證。IOW,客戶端程序的觸摸 UID 將是伺服器上的文件所有者。實際上,解決這個問題 idmapd+Kerberos 組合非常棒。
好的,並不是在所有環境中都可以執行 Kerberos。您可以通過將來自這些主機的所有請求映射到單個 uid/gid 來強制執行單個 uid。
/data 10.0.1.1(rw,all_squash,anonuid=123,anongid=456)