情况是使用rpc.idmapd映射ID的nfs4服务器和客户端. id映射正在客户端上处理从服务器提供的现有文件.
在服务器上:
[root@server ~]# id user1 uid=500(user1) gid=502(user1) groups=502(user1) [root@server ~]# ls -l /mnt/san/temp total 0 -rw-r--r-- 1 user1 user1 0 Aug 27 11:46 test1 [root@server ~]# ls -ln /mnt/san/temp total 0 -rw-r--r-- 1 500 502 0 Aug 27 11:46 test1
在客户端:
[user1@client ~]$id user1 uid=504(user1) gid=506(user1) groups=506(user1) [user1@client ~]$ls -l /mnt/san/temp total 0 -rw-r--r-- 1 user1 user1 0 Aug 27 11:46 test1 [user1@client ~]$ls -ln /mnt/san/temp total 0 -rw-r--r-- 1 504 506 0 Aug 27 11:46 test1
所以没关系.
但是从客户端创建文件:
[user1@client ~]$touch /mnt/san/temp/test2 [user1@client ~]$ls -l /mnt/san/temp total 0 -rw-r--r-- 1 user1 user1 0 Aug 27 11:46 test1 -rw-rw-r-- 1 user2 user2 0 Aug 27 11:49 test2 [user1@client ~]$ls -ln /mnt/san/temp total 0 -rw-r--r-- 1 504 506 0 Aug 27 11:46 test1 -rw-rw-r-- 1 505 507 0 Aug 27 11:49 test2
此时似乎没有在客户端进行id->名称映射.
两个系统都是CentOS 5.x.顺便提一下文件/proc/net/rpc/nfs4.nametoid/content
和/proc/net/rpc/nfs4.idtoname/content在客户端上为空,但在服务器上有条目.
我开始登录客户端上的rpc.idmapd,而/ var / log / messages显示它正用于名称到id映射,例如:
8月27日11:49:27 fw01 rpc.idmapd [11773]:客户端23 :(用户)名称“user2 @ localdomain” – > id“505”
我期待相应的id->名称查找发生在客户端创建文件的位置.
同步id和使用nfsv3的简单解决方案实际上不是一个选项(因为不简单!).
编辑:
对困惑感到抱歉:
[user1@client ~]$getent passwd 504 505 user1:x:504:506::... user2:x:505:507::... [user1@client ~]$getent group 506 507 user1:x:506: user2:x:507: [root@server ~]# getent passwd 504 505 user2:x:504:506::... [root@server ~]# getent group 506 507 user2:x:506:
即,似乎正在发生的是在客户端上创建文件,因为user1(uid 504 / gid 506)在服务器上创建之前没有被翻译.它在服务器上创建为504/506.这在服务器上是user2 / user2,所以在那之后它返回到客户端错误.
解决方法
我也有同样的问题,并花了一些时间研究答案.似乎rpc.idmapd不支持ID到名称映射,可以让您对文件系统进行更改.但是,我已经看到了如果使用Kerberos身份验证(
http://permalink.gmane.org/gmane.linux.nfsv4/11363)挂载,这可能会有用.我自己还没有尝试过,因为Kerberos似乎有点痛苦.此时我将简单地同步UID以简化操作.