在centos6.3下搭建了一台nfs服务器,然后用两台centos6.3的客户端挂载。为了保证挂载后,客户端和服务器端目录属主的一致,方便读写,在客户端和服务器端分别添加了www用户,www用户的uid一致,并且共享目录的属主设置为www。但是其中一台挂载后,目录的属主一直是nobody,但是另一台则正常,显示为www。nfs的服务器端对两台客户端的设置是一样的,但是挂载后显示的属主确不同。查找资料发现,在centos 6版本中默认使用的nfs-v4版本,其提供了称为rpc.idmapd 的守护进程,并使用 /etc/idmapd.conf 的配置文件。当请求加载nfsv4 时,该守护进程将处理 UID 和 GID 映射。默认使用nis,没有nis它会自动映射成nobody用户。解决办法如下

(1)在客户端清除idmap的缓存,然后重启rpcidmap,并重新挂载。大部分情况下可以解决

[root@ha1 ~]# nfsidmap -c[root@ha1 ~]# /etc/init.d/rpcidmapd restart正在启动 RPC idmapd:                                      [确定]正在启动 RPC idmapd:                                      [确定]

(2)如果上面的办法没有解决,可以用下面的办法

nfs服务器端,修改/etc/idmapd.conf,给Domain指定一个值,然后重启rpcidmap服务。

[root@ha2 ~]# vi /etc/idmapd.conf[General]#Verbosity = 0# The following should be set to the local NFSv4 domain name# The default is the host's DNS domain name.#Domain = local.domain.eduDomain = mydomain.com重启服务[root@ha2 ~]# /etc/init.d/rpcidmapd restartShutting down RPC idmapd:                                  [确定]正在启动 RPC idmapd:                                      [确定]

nfs客户端,同样修改/etc/idmapd.conf,给Domain指定一个值,要与服务器端指定的域名相同,然后重启rpcidmap服务

[root@ha1 ~]# vi /etc/idmapd.conf[General]#Verbosity = 0# The following should be set to the local NFSv4 domain name# The default is the host's DNS domain name.#Domain = local.domain.eduDomain = mydomain.com
重启服务[root@ha1 ~]# /etc/init.d/rpcidmapd restart正在启动 RPC idmapd:                                      [确定]正在启动 RPC idmapd:                                      [确定]

重新挂载后,发现目录属主正常,为www

[root@ha1 ~]# df -h文件系统              容量  已用  可用 已用%% 挂载点/dev/sda2             9.9G  2.3G  7.1G  25% /tmpfs                 244M     0  244M   0% /dev/shm/dev/sda1             194M   28M  157M  15% /boot/dev/sda5             8.7G  148M  8.1G   2% /data192.168.1.109:/data/nfsshare                       19G  1.2G   17G   7% /mnt[root@ha1 ~]# ll /mnt/总用量 0-rw-rw-r-- 1 www www 0 3月  25 14:15 a-rw-rw-r-- 1 www www 0 3月  25 15:32 bb