带有idmap的NFSv4

前端之家收集整理的这篇文章主要介绍了带有idmap的NFSv4前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
NFS服务器上出现以下错误,请您告诉我如何解决这个问题?

细节:

系统: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

解决方法

我要稍微猜一下.如果您在NFS服务器上解析UID“0”或“500”,您会得到什么?这是他们的本地账户吗?

我建议的原因是,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身份验证或类似,但从经验来看这是一项非常重要的工作. (尽管有一些相当方便的优点).我链接的那条消息(跟踪)意味着此错误消息会在以后的内核版本中停止弹出.

猜你在找的Linux相关文章