有几台服务器挂载同一台nfs服务器的一个共享目录,结果其他都正常继承了nfs服务器的用户信息,而另一台的目录所属用户组变成了nobody,如下图:
【采用的是默认系统的权限,即:
/oldboy 192.168.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,
no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534)】
系统环境:
系统版本及内核(服务端客户端一样的)
[root@NFS-Server ~]# cat /etc/redhat-release
CentOS release 6.3 (Final)
[root@NFS-Server ~]# uname -r
2.6.32-279.el6.x86_64
原因:暂时不明
分析:nfsv4 提供了称为rpc.idmapd 的守护进程,并使用 /etc/idmapd.conf 的配置文件。当请求加载nfsv4 时,该守护进程将处理 UID 和 GID 映射。
默认情况下,idmapd.conf 文件会对域参数做注释,但是该部分注释表明应将域值设置为主机的 DNS 域名,使用hostname 命令便可找到该 DNS 域名。查了很多资料,都说要设置idmapd.conf里面的Domain参数,但是,单纯的修改客户端的idmapd.conf并无法解决这一问题。
而当服务端和客户端的Domain这个参数都设为一样之后,再重新挂载,就一切正常了,即,取消Domain前面的注释,改为你所使用的根域名并保存,再重启idmapd服务
操作:
将所有nfs机器包括服务端和客户端的中/etc/idmapd.conf中的Domain的值设置为一样的:
[root@NFS-Server ~]# grep Domain /etc/idmapd.conf
Domain = abc.com
[root@NFS-Client-01 300]# cd /root/
[root@NFS-Client-01 ~]# grep Domain /etc/idmapd.conf
Domain = abc.com
[root@abc /]# grep Domain /etc/idmapd.conf
Domain = abc.com
然后重启所有机器的rpcbind和nfs
/etc/init.d/rpcbind restart
/etc/init.d/nfs restart
或者只重启所有机器的idmapd服务:
service rpcidmapd restart
查看结果,原来的nobody现在已经全部变为了nfsnobody: