带有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服务器上parsingUID'0'或'500',你会得到什么? 他们是本地账户吗?

我build议这样做的原因是NFSv4的devise,引用了域中的帐户名,并试图避免以前版本的NFS的“本地authentication”。 因此,它使用idmapd,它翻译帐户名称 – 在NFS数据包中传递 – 将用户名转换为UID / GID。

正如你已经正确地确定,这看起来是什么在这里打破 – 所以我的问题是,你使用的是什么authentication域,当你查询它,你得到一个UID 0和500的答案?

我见过类似的情况,例如服务器正在查看与客户端相比LDAP(well,active directory)目录的错误分支。 由于无法parsingUID /用户名关系,因此中断了这些用户,并将这些用户翻译为“nobody”。

你已经通过nsswitchconfiguration了parsing–nsswitch对“passwd”说了什么? (主要在服务器上,因为这是问题似乎存在的地方)。

编辑:好的,所以根据你的passwd你已经有'文件'作为本地数据库 – 例如/etc/passwd 。 这意味着您正在通过本地帐户映射UID / GID。 你应该使用NFSv4的UID – 它应该是用户名。

然而,一个谷歌search给了我: http : //www.spinics.net/lists/linux-nfs/msg38598.html

因此,下一个问题是 – 你使用“系统”身份validation? 我猜根据你的fstab,你是在这一点上 – 这似乎是预期的行为 – 你的客户正在使用“SYS”,因此通过UID / GID。 idmapd抱怨,因为他们不是有效的用户(他们是UID)。

如果在你的客户端上,你将一个文件作为UID 500或者0来触摸,那么它在客户端和服务器上看起来是什么样的(ls -l获取用户名,ls -ln来获取uid)? 如果工作正常,这似乎是NFSv3 Auth sys和NFSv4之间的向后兼容性的产物,并且这些消息是无害的。

您可以考虑升级到Kerberos身份validation或类似的,但从经验,这是一个不平凡的演习。 (虽然有一些相当便利的优点)。 我链接的这条消息(踪迹)意味着这个错误消息停止popup在以后的内核版本。

看来你正在使用NFSv3,它只通过networking发送数字用户和组标识符。

为了使idmapd的工作,你将需要使用NFSv4发送idmapper理解的用户@域名标识符映射到本地帐户(所以你不需要在服务器和客户端上相同的uid / gid)。

尝试使用-t选项安装该共享:

 mount -t nfs4 server:/path /mountpoint 

请检查来自gentoo论坛的以下解决scheme是否可以帮助您:

  1. On the NFS server, /etc/hostname did not contain the FQDN, just the local hostname. 2. This particular client had an unconfigured /etc/idmapd.conf. It had Domain = localdomain instead of Domain = FQDN-minus-hostname. 

对于你的设置,这看起来像第二个选项。

谷歌的确切的错误消息“nss_getpwnam:名称'0'不映射到域”给你很多的结果,这可能会帮助你(也只是指出最有希望的)