将本地用户的 UID 和 GID 映射到挂载的 NFS 共享

将本地用户的 UID 和 GID 映射到挂载的 NFS 共享

我有一台使用 NFSv4 的服务器。我正在将远程用户主文件夹的内容挂载到本地主机。能够读取和写入内容,但当我从本地主机检查挂载卷上的文件所有权时,它们都属于相应的远程用户和组 (512)。有没有办法让它们看起来像是属于本地主机上的本地用户和组 (1000)?

/etc/exports偏僻的主机(IP 为 192.168.1.110)

/home/user512 192.168.1.142(rw,sync,all_squash,anonuid=512,anongid=512)

/etc/fstab当地的主机(IP 为 192.168.1.142)

192.168.1.110:/home/user512    /home/localuser/projects/project512   nfs    rw,hard,intr,rsize=32768,wsize=32768    0       0

答案1

这就是 idmapping 应该做的事情。首先,在客户端和服务器上启用它:

# echo N > /sys/module/nfsd/parameters/nfs4_disable_idmapping

清理 idmap 缓存并重新启动 idmap 守护进程:

# nfsidmap -c
# service rpcidmapd restart

现在服务器和客户端将发送字符串主体,而不是数字 ID,例如[电子邮件保护]. 你需要有鲍勃客户端和服务器两个主机上的帐户。

尽管如此,数字 ID 可以不同。

答案2

您已获得所有信息。根据 exportfs 手册页,all_squash将所有 uid 和 gid 映射到匿名版本。您编写的内容强制将这些值设为 512。如果您将其更改为 1000,则远程主机上的 nfs 服务器会将所有内容都设为 1000,并且应该授予访问权限。

答案3

在你的 nfs 客户端上,编辑 /etc/idmapd.conf 并更改

[Mapping]

Nobody-User = myappuser
Nobody-Group = myappuser

之后重新启动 nfs 服务

答案4

我能够nobody:nobody通过两项更改修复 CentOS 6(服务器)+ 7(客户端)上的 NFS 所有权问题:

  1. 确保/etc/idmapd.conf Domain服务器和客户端上的参数相同
  2. 服务器有一个与客户端匹配的 UID 和 GID 的实际用户

然后在客户端

service nfs restart

并根据需要重新挂载共享

相关内容