![“getent passwd”列举用户,“su“失败”](https://linux22.com/image/616255/%E2%80%9Cgetent%20passwd%E2%80%9D%E5%88%97%E4%B8%BE%E7%94%A8%E6%88%B7%EF%BC%8C%E2%80%9Csu%E2%80%9C%E5%A4%B1%E8%B4%A5%E2%80%9D.png)
我有一台带有两个 BDB 后端的 LDAP 服务器。用户帐户分布在两个后端之间。后端 A 有一个指向后端 B 的引用对象。
我曾尝试在 Linux Mint 13 上设置 LDAP 客户端身份验证。getent passwd 列出了后端 A 和后端 B 之间的用户,但使用 su - 时,su 返回“未知 ID”。不过,使用 su 和后端 A 的用户 ID 就可以了。
以下是客户端(Linux Mint 13)中的 /etc/ldap/ldap.conf:
base dc=backendA
uri ldaps://ldap.x.example.com
ldap_version 3
binddn cn=auth,dc=backendA
bindpw admin@123
referrals yes
客户端中的 /etc/ldap.conf:
base dc=backendA
uri ldaps://ldap.x.example.com
ldap_version 3
binddn cn=auth,dc=backendA
bindpw admin@123
rootbinddn cn=admin,dc=backendA
pam_password md5
deref always
referrals yes
nss_base_passwd ou=users,dc=backendA?one
nss_base_shadow ou=users,dc=backendA?one
nss_base_group ou=roles,dc=backendA?one
nss_base_passwd ou=users,dc=backendB?one
nss_base_shadow ou=users,dc=backendB?one
nss_base_group ou=roles,ou=users,dc=backendB?one
可能出了什么问题?
答案1
getent passwd 只是其中的一部分,它表明系统可以看到用户并且 ldap 正在运行,但 su 可能也在使用 PAM,而 PAM 有自己的一套规则,而不仅仅是系统用户列表。由于您使用的是 MINT,因此您肯定在使用 PAM。
检查 /etc/pam.d/su 文件及其加载的任何文件。你肯定缺少其中的 ldap 配置。使用这个文件作为配置它的基础。