我有六台機器、一台 NFS 伺服器和五個客戶端。三個客戶端(運行 Ubuntu 14.04)工作得很好。另外兩個運行的是 12.04,遇到了權限錯誤。
在映射的客戶端計算機上,ls -l /home/
返回:
drwxr-xr-x 22 testuser testuser 12288 Oct 9 18:03 testuser
這是預期的權限設定。testuser
是需要此資料夾權限的使用者。
但是,當登入時testuser
,當我touch /home/testuser/test.txt
收到此錯誤時:
touch: cannot touch `/home/testuser/test.txt': Permission denied
現在,數字 id 與 id 字串不匹配,但是有人告訴我,情況不必如此。
客戶端設定:
cat /sys/module/nfs/parameters/nfs4_disable_idmapping
N
上述設定允許 NFS 使用字串而不是數字 UID 和 GID 來映射使用者權限。
cat /etc/idmapd.conf
[General]
Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
Domain = localdomain
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup
伺服器設定:
cat /etc/exports
/raid/nfs/home server1(rw,sync,no_root_squash,no_subtree_check)
/raid/nfs/home server2(rw,sync,no_root_squash,no_subtree_check)
是否有錯誤或需要採取額外步驟才能使 12.04 機器正常運作?或者我應該硬著頭皮升級,或者只是更改所有 UID 以匹配伺服器?
答案1
問題是,只有當您執行 GETATTR/SETATTR(stat、chown、setacl)或使用 kerberos(用於主體到 id 映射)時,才會涉及 idmapd。但是,當 nfs 用戶端發送帶有 auth=sys 的 CREATE 請求時,將從 RPC 訊息中取得 uid 和 gid。所以你需要伺服器和客戶端上的uid和gid匹配來解決你的權限問題。