为什么所有 LDAP 用户都显示为 getent passwd?

ujj*_*ain 6 openldap redhat ldap pam-ldap rhel6

我们将 LDAP 服务器与 Solaris 和 RHEL 服务器一起使用,并计划将更多服务器迁移到 RHEL。但是,我们在所有 Red Hat 服务器上都遇到了 LDAP 问题。

当我键入“getent passwd”时,将显示整个 LDAP 服务器上的所有用户,而不仅仅是有权访问该服务器的用户。通常大约有 10 到 50 人可以访问服务器,因此 Solaris 会打印出这个用户列表,而 Red Hat 会直接打印出 LDAP 中存在的所有用户的列表(大约 650 个)。

我更喜欢 Solaris 上的行为,其中只有有权访问服务器的用户才会以“getent passwd”列出。

如何将 RHEL 配置为仅列出有权访问服务器的用户?

ujj*_*ain 2

这是默认行为,RHEL 限制使用 PAM 的用户,nss 尝试解析给定 ldap 搜索库中的所有可用用户/组条目。

可能存在这样的情况:系统具有 nfs 挂载,其中包含无权访问计算机的用户拥有的文件,如果所有用户对操作系统可见,您仍然可以解析用户(访问受到 PAM 限制,因此他们不会可以登录)。

您可以使用以下选项之一来更改行为。

  1. 使用SSSD,默认情况下不会枚举用户/组。(即;getent passwd 将仅列出本地用户)。

  2. 使用 LDAP 过滤器,以便只有所需的用户对计算机可见。仅当存在可用于过滤用户的特定过滤器时(例如:在组上使用 memberof 属性),这才是可能的。

  3. 使用兼容模式来过滤用户。

例如:

nsswitch.conf 
passwd: files compat
passwd_compat: ldap

in passwd file, add +@netgroup.
Run Code Online (Sandbox Code Playgroud)