使用(getent passwd)命令获取客户端上的所有 Ldap 用户列表

使用(getent passwd)命令获取客户端上的所有 Ldap 用户列表

我在 centos6 上都有 open ldap 服务器和客户端。我需要客户端上 open ldap 用户的所有列表(/etc/passwd)

答案1

我不确定我是否正确理解了您的问题,但我认为您想让系统知道存储在 LDAP 中的用户。

为了实现这一点,你必须告诉 nsswitch 系统如何收集用户信息。编辑 /etc/nsswitch.conf 文件

   passwd:         compat
   group:          compat
   shadow:         compat

到:

   passwd:         compat ldap
   group:          compat ldap 
   shadow:         compat ldap

这样,您就告诉系统首先在本地数据库(例如组、密码和影子文件)中搜索,然后在 ldap 中搜索。当然,您需要正常工作的 LDAP 环境,否则系统找不到 ldap 数据。您需要 nss_ldap 包来获取 nss 的 ldap 功能。如果您尚未这样做,则必须根据您的 LDAP 环境在 /etc/ldap.conf 或 /etc/ldap/ldap.conf 和/或 /etc/openldap/ldap.conf 中配置 LDAP 系统。例如:

BASE    dc=somesite,dc=com
URI     ldap://my.ldap.server.somesite.com
TIMELIMIT       10

您可能更喜欢使用 centos 工具 system-config-authentication(信息/启用 LDAP 支持)来执行此操作。

此后,您应该能够通过发出 getent passwd 来访问用户 ID。

或者,您可能希望使用 sssd 作为中间人来联系 ldap,如下所述:https://wiki.contribs.org/Client_Authentication:Centos_via_sssd/ldap

附加信息:

  • 如果您正在使用某些名称切换缓存软件(如 sssd 或 nslcd),则必须更新该配置(如果需要)并重新启动服务。
  • 在拥挤的站点上不断查询 LDAP 可能会有点过头。您可以使用上述缓存软件 (nslcd) 来缓解此问题。
  • 从 LDAP 获取密码/组信息和身份验证是完全不同的两种情况。如果你想认证针对 ldap,您必须更改 PAM 设置。那是另一回事。

相关内容