File-Permissions

NFS4 w/o Kerberos:名稱映射有效,權限無效

  • March 27, 2021

我只是想在 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)

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