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

Ale*_*der 44 nfs mapping

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

远程主机上的/etc/exports(IP 为 192.168.1.110)

/home/user512 192.168.1.142(rw,sync,all_squash,anonuid=512,anongid=512)
Run Code Online (Sandbox Code Playgroud)

本地主机上的/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
Run Code Online (Sandbox Code Playgroud)

kof*_*ann 43

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

# echo N > /sys/module/nfs/parameters/nfs4_disable_idmapping
Run Code Online (Sandbox Code Playgroud)

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

# nfsidmap -c
# service rpcidmapd restart
Run Code Online (Sandbox Code Playgroud)

现在在服务器和客户端将发送而不是数字 ID 字符串主体,如 bob@YOURDOMAIN.COM。您需要在两个主机(客户端和服务器)上都有bob帐户。然而,数字 ID 可以不同。

  • Ftr,在 nfs 服务器上,路径是 /sys/module/nfsd/parameters/nfs4_disable_idmapping(nfsd,而不是 nfs) (10认同)
  • 我的 Linux Mint 客户端上没有服务“rpcidmapd”。 (4认同)
  • 在 Ubuntu 下,该服务被称为 `idmapd` 而不是 `rpcidmapd` (4认同)
  • Debian => 来自 nfs-common 包的 idmapd 该服务名为 `nfs-idmapd` (3认同)
  • 关于这个答案的问题:执行 `echo N > /sys/module/nfsd/parameters/nfs4_disable-idmapping` 会使这个设置永久化,还是每次重启后我都必须重置它? (2认同)
  • 在 Fedora 上,重启命令是“systemctl restart nfs-idmap.service”。而在服务器端,路径为:`/sys/module/nfsd/parameters/nfs4_disable_idmapping`;而在客户端,它是“/sys/module/nfs/parameters/nfs4_disable_idmapping”(即,没有 nfs 中的“d”)。 (2认同)

bec*_*est 6

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

  • `/home/gkistner *(async,rw,all_squash,anonuid=1000,anongid=1000,no_subtree_check)` 导出,以及 `10.20.118.112:/home/gkistner /mnt/r2 nfs rsize=8192,wsize=819 fstab 中的 timeo=14,intr` (2认同)

c4f*_*t0r 5

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

[Mapping]

Nobody-User = myappuser
Nobody-Group = myappuser
Run Code Online (Sandbox Code Playgroud)

之后重新启动nfs服务