NFS 用户映射,其中用户经过 AD 身份验证,但 NFS 服务器用户为本地帐户

NFS 用户映射,其中用户经过 AD 身份验证,但 NFS 服务器用户为本地帐户

服务器 : 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 桌面

所有者名为“用户”,组名为“域用户”

相关内容