我试图在两个不共享UID/UID的系统中使用NFSv4挂载。这是用于系统迁移的,旧环境使用任何可用的UID/UID,现在它们在新环境上发生冲突。我已经在新环境中给了所有用户新的非冲突I。
我的问题是NFS挂载。我试图使用NFSv4,因为它将ID作为字符串传递,而不是数字(这将有助于映射)。我可以在旧环境上安装一个文件系统,当我执行一个ls -l
时,我会在两边看到正确的名称(所以映射是工作的)。
当我试图以用户身份(存在于两个具有不同UID的系统上的用户)访问一个文件时,我会被拒绝权限。用户是两个系统上适当组的成员(该组在两个环境中都有不同的GID,但用户是双方的适当成员)。
解决我的问题还有其他的选择(使用NFSv3和重新映射UID/UID),但是如果我能避免的话,我不想这样做。
这是我的配置和一些测试向你展示我所看到的..。
# 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.
下面是我在同一个客户端框上使用根用户可以做的事情:
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
因此,从我所能看到的所有see...the UID/GID转换的正常工作情况来看,我只是不能在客户机上以非根用户的身份编写文件。
发布于 2014-04-23 16:14:54
据我有限的知识,NFSv4 ID映射只适用于通过NFS本身发送的stat()结果和其他信息,即chown
发送的文件所有者、ls
或stat
返回的文件所有者等等。
但是,身份验证是由一个较低级别的SunRPC处理的,它仍然在默认的AUTH_UNIX协议中使用您的数字UID。因此,如果您是本地用户#12,服务器也会收到这些信息。
为了避免这种情况,您需要一种支持用户名的身份验证机制;Kerberos (AUTH_GSS)可能是这里唯一的选择。
https://serverfault.com/questions/591143
复制相似问题