AIX上的NFSv4权限

我试图跨两个不共享UID / GID的系统使用NFSv4挂载。 这是一个系统迁移,旧环境使用任何UID / GID可用,他们现在冲突的新环境。 我已经给所有的用户在新的环境中新的非冲突的ID。

我的问题是NFS挂载。 我试图使用NFSv4,因为它传递的ID作为string,而不是数字(这应该有助于映射)。 我可以在旧的环境中安装一个文件系统,当我做一个ls -l ,我在两边看到正确的名字(所以映射工作正常)。

当我尝试以用户身份(两个系统上存在不同UID的用户)接触文件时,我的权限被拒绝。 用户是两个系统上适当组的成员(该组在两种环境中都有不同的GID,但用户是双方都是正确的成员)。

还有其他的select来解决我的问题(使用NFSv3和重新映射的UID / GID),但我不想这样做,如果我可以避免它。


这里是我的configuration和一些testing,以显示我所看到的…

服务器configuration:

 # 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 

客户端configuration:

 # 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映射仅适用于stat()结果和通过NFS本身发送的其他信息 – 即,由chown发送的文件所有者,由lsstat返回的等等。

但是,身份validation由较低级别的SunRPC进行处理,SunRPC仍使用默认AUTH_UNIX协议中的数字UID。 所以,如果你是用户#12本地,这也是服务器将会收到的。

为了避免这种情况,你需要一个支持用户名的authentication机制。 Kerberos(AUTH_GSS)可能是唯一的select。