Permissions

AIX 上的 NFSv4 權限

  • April 24, 2014

我正在嘗試在兩個不共享 UID/GID 的系統上使用 NFSv4 掛載。這是針對舊環境使用任何可用的 UID/GID 的系統遷移,它們現在在新環境上發生衝突。我已經在新環境中為所有使用者提供了新的非衝突 ID。

我的問題是 NFS 掛載。我正在嘗試使用 NFSv4,因為它將 ID 作為字元串而不是數字(這應該有助於映射)傳遞。我可以在舊環境上安裝一個文件系統,當我執行 時ls -l,我在兩邊都看到了正確的名稱(因此映射正在工作)。

當我嘗試以使用者身份(兩個系統上都存在具有不同 UID 的使用者)觸摸文件時,我的權限被拒絕。使用者是兩個系統上適當組的成員(該組在兩個環境中具有不同的 GID,但使用者是雙方的適當成員)。

還有其他選項可以解決我的問題(使用 NFSv3 和重新映射 UID/GID),但如果可以避免的話,我不想這樣做。


這是我的配置和一些測試,向您展示我所看到的……

伺服器配置:

# chnfsdom
Current local domain: red.act.ed
# cat /etc/exports
/usr/sap/trans -vers=4,sec=sys,rw,root=172.29.4.56:172.29.4.55:172.29.4.65
# ls -ld /usr/sap/trans/data
drwxrwxr-x    2 d01adm   sapsys       118784 Apr 23 08:25 /usr/sap/trans/data
# ls -nld /usr/sap/trans/data
drwxrwxr-x    2 300      300          118784 Apr 23 08:25 /usr/sap/trans/data

客戶端配置:

# chnfsdom
Current local domain: red.act.ed
# mount | grep trans
devbox   /usr/sap/trans   /usr/sap/trans   nfs4   Apr 23 09:01 vers=4
qabox:/ # ls -ld /usr/sap/trans/data
drwxrwxr-x    2 d01adm   sapsys       118784 Apr 23 09:25 /usr/sap/trans/data
qabox:/ # ls -nld /usr/sap/trans/data
drwxrwxr-x    2 8        14           118784 Apr 23 09:25 /usr/sap/trans/data

根據該資訊,UID/GID 翻譯似乎工作正常。這是摩擦(在客戶端盒子上)……

qabox:q01adm> pwd
/usr/sap/trans
qabox:q01adm> ls -ld .
drwxrwxr-x   14 d01adm   sapsys         4096 Apr 23 09:56 .
qabox:q01adm> id
uid=12(q01adm) gid=14(sapsys) groups=0(system),7(security),4294967294(nobody),15(oper),16(dba)
qabox:q01adm> touch file
touch: 0652-046 Cannot create file.

這是我可以在同一個客戶端上使用 root 執行的操作:

qabox:/usr/sap/trans # pwd
/usr/sap/trans
qabox:/usr/sap/trans # id
uid=0(root) gid=0(system) groups=2(bin),3(sys),7(security),8(cron),10(audit),11(lp),14(sapsys)
qabox:/usr/sap/trans # touch file
qabox:/usr/sap/trans # chown q01adm:sapsys file
qabox:/usr/sap/trans # ls -l file
-rw-r--r--    1 q01adm   sapsys            0 Apr 23 09:59 file
qabox:/usr/sap/trans # ls -nl file
-rw-r--r--    1 12       14                0 Apr 23 09:59 file

在伺服器盒子上,我看到了這個:

# ls -l /usr/sap/trans/file
-rw-r--r--    1 q01adm   sapsys            0 Apr 23 08:59 /usr/sap/trans/file
# ls -nl /usr/sap/trans/file
-rw-r--r--    1 302      300               0 Apr 23 08:59 /usr/sap/trans/file

所以,從我所看到的一切……UID/GID 轉換工作正常,我只是不能在客戶端以非 root 使用者身份寫入文件。

根據我有限的知識,NFSv4 ID 映射僅適用於通過 NFS 本身發送的 stat() 結果和其他資訊——即,由orchown返回的文件所有者等。ls``stat

但是,身份驗證由較低級別(SunRPC)處理,它仍然在預設的 AUTH_UNIX 協議中使用您的數字 UID。因此,如果您是本地使用者 #12,那麼伺服器也將收到該使用者。

為避免這種情況,您需要一種支持使用者名的身份驗證機制;Kerberos (AUTH_GSS) 可能是這裡唯一的選擇。

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