Openldap 和 nfserver 都可以工作,尽管除非我先使用新的 ldapusers 登录到 nfserver,否则无法创建 /home/user

Openldap 和 nfserver 都可以工作,尽管除非我先使用新的 ldapusers 登录到 nfserver,否则无法创建 /home/user

我有一个在 cent os 7 上设置的 openldap 服务器。我将它与我所有其他从 nfs 服务器为其 /home 安装 nfs 挂载的虚拟机混合使用。

我刚刚发现,如果我创建一个新的 ldap 用户并尝试登录到某个 VM,它会允许我登录,但说明它无法创建 /home/user 并且无法将 chngdir 更改为它。

但我还了解到,如果我首先 ssh user@mynfsserver,它会登录,创建适当的 /home/user,然后我可以使用我的 ldapuser ssh 到任何其他 VM,并且它运行良好,不再抱怨无法为该用户在主目录中创建文件夹。

我在每个 VM 上使用带有 home.map 文件的 autofs,它看起来具有正确的权限:

* -fstype=nfs,rw,nosuid,soft 10.10.1.139:/home/&

因此,这感觉像是某种权限问题,用户使用新创建的 ldap 凭据登录虚拟机时会出错。但如果同一个用户登录 10.10.1.139(映射 home 的 nfs 服务器),那么他们似乎可以登录虚拟机,而不会再出现无法创建 /home/user 的错误。

我的 openldap 服务器是否必须以某种方式了解 nfs 服务器?

除了必须先登录 nfs 服务器这一小麻烦之外,我可以转到另一台虚拟机,触摸该主文件夹中的文件,然后它就会出现在我登录的任何其他虚拟机上。因此,它的工作效率大概为 95%,只是必须先使用 ldap 用户登录 nfserver,才能在其他虚拟机上先创建 /home/user,这有点烦人。

答案1

新主目录的自动创建由 root 完成,但默认情况下,root 会映射到 nfs 挂载上的匿名用户,因此无法在所有 nfs 客户端上创建主目录。在 nfs 服务器上no_root_squash添加行以禁用此功能并运行以使更改生效。因此,根据您的评论,它应该如下所示:/etc/exportssudo exportfs -ra

/home 10.10.1.0/24(rw,no_root_squash)

这将允许所有客户端以 root 身份访问已挂载的 nfs 文件系统。

然而,这有一些含义。来自 exportfs 手册页:

用户 ID 映射

nfsd 根据每个 NFS RPC 请求中提供的 uid 和 gid 对服务器计算机上的文件进行访问控制。用户期望的正常行为是,她可以像在普通文件系统上一样访问服务器上的文件。这要求在客户端和服务器计算机上使用相同的 uid 和 gid。这并不总是正确的,也不总是理想的。

通常,当访问 NFS 服务器上的文件时,不希望客户端计算机上的 root 用户也被视为 root。为此,uid 0 通常被映射到不同的 id:所谓的匿名或 nobody uid。此操作模式(称为“root squashing”)是默认模式,可以使用 no_root_squash 关闭。

默认情况下,exportfs 会选择 65534 的 uid 和 gid 来进行压缩访问。这些值也可以通过 anonuid 和 anongid 选项覆盖。最后,您可以通过指定 all_squash 选项将所有用户请求映射到匿名 uid。

相关内容