细节:
系统:CentOS版本6.4,NFS:nfs-utils-1.2.3-36
# cat /etc/idmapd.conf [General] Domain = domain.com [Mapping] Nobody-User = nobody Nobody-Group = nobody [Translation] Method = nsswitch
Sep 3 08:25:28 snode1 rpc.idmapd[1382]: nss_getpwnam: name '0' does not map into domain 'domain.com' Sep 3 08:25:29 snode1 rpc.idmapd[1382]: nss_getpwnam: name '500' does not map into domain 'domain.com'
编辑:2013年9月3日10:41
请注意我使用的是NFSv4,这些错误只出现在NFS服务器上(不是NFS客户端).
服务器:
# cat /etc/sysconfig/nfs MOUNTD_NFS_V2="no" MOUNTD_NFS_V3="no" ... RPCNFSDARGS="-N 2 -N 3"
客户:
# cat /etc/fstab server:/ /data nfs4 defaults,hard,intr,timeo=15,_netdev,noatime,nodiratime,nosuid 0 0
编辑:Wed Jun 11 14:52:50 BST 2014
# getent passwd "0" | cut -d: -f1 root # getent passwd "500" | cut -d: -f1 user1
–
# grep "^passwd" /etc/nsswitch.conf passwd: files
解决方法
我建议的原因是,NFSv4是设计的,引用域中的帐户名,并试图避免以前版本的NFS中的“本地身份验证”.因此,它使用idmapd,它转换帐户名称 – 在NFS数据包中传递 – 将用户名转换为UID / GID.
正如你已经正确确定的那样,这看起来就像是在这里被打破了 – 所以我的问题是,你使用的认证域是什么,当你查询它时,你会得到UID 0和500的答案吗?
我看过类似的情况,例如与客户端相比,服务器正在查看LDAP(井,活动目录)目录的错误分支.因为它无法解析UID /用户名关系,所以它破坏了,并将这些用户转换为’nobody’.
你已经通过nsswitch配置了分辨率 – nsswitch对’passwd’说了什么? (主要在服务器上,因为问题似乎存在).
编辑:
好的,所以根据你的’passwd’你有’文件’作为你的本地数据库 – 例如/ etc / passwd中.这意味着您通过本地帐户映射UID / GID.你不应该在NFSv4上使用UID – 它应该是用户名.
然而,谷歌搜索的一个地方给了我:
http://www.spinics.net/lists/linux-nfs/msg38598.html
因此接下来的问题是 – 您使用’sys’身份验证吗?我猜你的fstab是基于你的,在这一点上 – 这似乎是预期的行为 – 你的客户正在使用’sys’,因此传递UID / GID. idmapd抱怨,因为他们不是有效用户(他们是UID).
如果在您的客户端上,您“触摸”一个UID 500或0的文件,它在客户端和服务器上的外观如何(ls -l获取用户名,ls -ln获取uid)?
如果这正常工作,这似乎是NFSv3 Auth sys和NFSv4之间向后兼容的工件,并且消息是无害的.
您可以考虑升级到Kerberos身份验证或类似,但从经验来看这是一项非常重要的工作. (尽管有一些相当方便的优点).我链接的那条消息(跟踪)意味着此错误消息会在以后的内核版本中停止弹出.