服务器 : CentOS 7.3.1611,已启用 NFS4。在 /etc/idmapd.conf 中,域 = my.domain.com 本地用户创建为“用户”,并通过 NFS 导出目录:/home/user/Documents
客户 : Fedora 25 已加入 AD 领域:my.domain.com AD 用户登录工作正常。sssd.conf 已更改,因此用户名只是“用户”,而不是“[电子邮件保护]'。因此会自动创建主目录 /home/user。我已将 /etc/idmapd.conf 更改为与 NFS 服务器 (my.domain.com) 相同的域。
现在: 在客户端机器上,我想从 CentOS NFS 服务器通过 NFS4 挂载 /home/user/Documents。
挂载成功,但 UID 映射错误。因此,在客户端上,目录 /home/user/Documents 从 NFS 服务器挂载,但 uid = 1002,这是 NFS 服务器上“用户”的 UID,但这不是客户端上的正确用户“用户”(UID 为 709001103)。
$ mount -t nfs4 -vvv server:/user/Documents /home/user/Documents
mount.nfs4: timeout set for Wed Mar 8 15:54:45 2017
mount.nfs4: trying text-based options 'vers=4.2,addr=192.168.95.17,clientaddr=192.168.95.28'
$ ls -l /home/user/
drwxr-xr-x. 2 user domain users 4096 Mar 8 14:26 Desktop
drwxrwxr-x. 2 1002 1002 18 Mar 8 14:36 Documents
drwxr-xr-x. 2 user domain users 4096 Mar 8 14:26 Downloads
(我不明白为什么 ls -l 将用户名显示为“用户域”而不仅仅是“用户”)。
有什么想法可以确保客户端和服务器之间的用户映射正确吗?在此先感谢您的帮助。
答案1
默认情况下,如果 mount 未使用 auth_gss,客户端和服务器将使用数字 UID。要强制执行字符串主体,您需要
echo N > /sys/module/nfs/parameters/nfs4_disable_idmapping
和
echo N > /sys/module/nfsd/parameters/nfs4_disable_idmapping
在客户端和服务器上,注意,在服务器上/sys/模块/nfsd. 为了使其永久生效,请将其添加到 /etc/modprobe.d/nfs.conf:
echo "options nfs nfs4_disable_idmapping=0" > /etc/modprobe.d/nfs.conf
和
echo "options nfsd nfs4_disable_idmapping=0" > /etc/modprobe.d/nfsd.conf
答案2
$ ls -l /home/user/ drwxr-xr-x. 2 用户域用户 4096 3 月 8 日 14:26 桌面
所有者名为“用户”,组名为“域用户”