我在 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 设置。那是另一回事。