我有一台使用 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 所有权问题:
- 确保
/etc/idmapd.conf
Domain
服务器和客户端上的参数相同 - 服务器有一个与客户端匹配的 UID 和 GID 的实际用户
然后在客户端
service nfs restart
并根据需要重新挂载共享