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


36

我有一台装有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

Answers:


34

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

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

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

# nfsidmap -c
# service rpcidmapd restart

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


7
Ftr,在nfs服务器上,路径为/ sys / module / nfsd / parameters / nfs4_disable_idmapping(nfsd,不是nfs)
Mike Purcell

2
rpcidmapd我的Linux Mint客户端上没有服务。
科尼

1
关于此答案的问题:这样做 echo N > /sys/module/nfsd/parameters/nfs4_disable-idmapping 会使该设置永久化吗,还是每次重启后我都必须将其重置?
mauritslamers

4
在Ubuntu下,该服务被称为idmapd而不是rpcidmapd
mauritslamers

2
Debian =>从nfs-common包中进行idmapd该服务的名称为nfs-idmapd
Philippe Gachoud

5

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


我在客户端上的UID是1000,与服务器上的同名用户的UID是1003我已经尝试设置anonuid=1000,anongid=1000anonuid=1003,anongid=1003(并重新启动nfsserver,并取消/重新安装的份额),并没有工作。拒绝投票,因为此答案似乎无效。
Phrogz '16

只是为了确认一下,您的导出和fstab条目是什么?
becomingwisest

1
/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=8192,timeo=14,intrfstab
Phrogz '16

3

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

[Mapping]

Nobody-User = myappuser
Nobody-Group = myappuser

在此之后重新启动nfs服务

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.