关于NFSv4服务共享目录里的文件UID和GID显示为nobody的解决方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于NFSv4服务共享目录里的文件UID和GID显示为nobody的解决方法相关的知识,希望对你有一定的参考价值。

关于NFSv4服务共享目录里的文件UID和GID显示为nobody的解决方法

 

一、问题现象:

当我们使用NFSv4这个版本的NFS服务给客户端提供共享文件系统时,会产生共享文件夹下的文件的属主和属组都是nobody的现象,具体现象见下图:

技术分享

二、问题原因:

造成UID和GID显示为nobody的原因是,nfsv4提供了称为rpc.idmapd 的守护进程,这个服务的配置文件是 /etc/idmapd.conf 。当收到来自客户端的加载请求时,该守护进程将处理UID 和 GID 映射,如果不对其进行配置,这个服务默认将共享目录内文件的UID和GID映射为nobody,见下图:

技术分享

三、解决方法:

如果要使用idmapd服务,必须要分别在服务端和客户端的idmapd配置文件/etc/idmapd.conf中,去设置服务端和客户端主机的根域名Domain = domain.com (此处根据实际情况填写), 因为不确定这对测试环境是否有影响,所以采取在服务端端停掉这个服务,同时让NFS模块禁用idmapd服务的办法去解决问题。

四、操作步骤:

#本次环境采用vmware workstaion的虚拟机进行模拟,主机信息如下:

服务端:

主机名:NFSAP1

IP:192.168.137.132

操作系统版本:redhat6.5 x64

客户端:

主机名:TESTAP1

IP:192.168.137.142

操作系统版本:redhat6.5 x64

 

1、在服务端,安装NFS服务。

yum –y installnfs

vim  /etc/exports

/naslog192.168.137.*(rw,sync,no_root_squash)

:wq

chkconfig --level 2345 nfs on

service nfs start

2 、在服务端,新建文件/etc/modprobe.d/nfs.conf,加入让NFS模块去禁用idmapd服务的选项。 

echo "options nfsnfs4_disable_idmapping=1" > /etc/modprobe.d/nfs.conf 

3、在服务端,重启NFS服务

service nfs restart

4、在服务端,停止idmapd服务

service rpcidmapd stop

5、在客户端,把挂载共享目录信息加入到文件/etc/fstab文件中。

echo"192.168.137.132:/naslog         /naslog        nfs4    defaults       0 0" >>/etc/fstab

6、在客户端,使用mount命令自动挂载共享目录。

mount -a

7、在客户端,查看共享目录下的文件属主属组,已经不是nobody了。

技术分享

五、测试:

测试当删除正在被调用的文件时,文件描述符是否被释放。

1、在客户端共享目录下,新建一个文件abc.txt,并用tail命令去动态查看。

技术分享

2、删除这个abc.txt文件。

技术分享

#下图中删除1.txt后,在当前目录自动产生的临时文件属主和属组不是nobody。

技术分享

3、使用lsof命令查看文件句柄没有被占用。

技术分享

 


本文出自 “sunwangbackup” 博客,请务必保留此出处http://sunwangbackup.blog.51cto.com/10866322/1953303

以上是关于关于NFSv4服务共享目录里的文件UID和GID显示为nobody的解决方法的主要内容,如果未能解决你的问题,请参考以下文章

文件共享服务之NFS

如何创建具有默认 uid:gid 和多个组访问 gids(4 到 5)的 pod,这是访问 nfs 共享所需的。?

什么是父进程和子进程?

Python递归更改目录的uid和gid(chown)

Linux文件属性用户组权限

ubuntu挂载windows共享目录