我已经安装了nss_ldap,编辑了nsswitch.conf来使用ldap; 这里是我的/etc/ldap.conf内容:
host ldap.<mycompany>.com base o=<mycompany>,c=<cc> bind_policy soft nss_reconnect_tries 4 nss_reconnect_sleeptime 1 nss_reconnect_maxsleeptime 16 nss_reconnect_maxconntries 2
当我做
getent passwd
我得到了公司所有用户名的正确观点。 但是,如果我这样做
getent passwd <some user>
使用已知的有效用户名,则不返回任何内容,就好像用户不存在一样。 (它适用于本地非ldap用户)
如果我启用了debug来编译nss_ldap,前者会打印出大量debugging消息,如:nss_ldap:==> do_result nss_ldap:<== do_result nss_ldap:==> _nss_ldap_assign_userpassword nss_ldap:<== _nss_ldap_assign_userpassword
但后者没有显示任何东西。 syslog中也没有任何东西。
这让我很困惑。 我应该从哪里开始寻找问题? 任何想法可能是?
客户端运行Gentoo linux,nss_ldap-264。 LDAP服务器不在我的控制之下。
你使用nscd命名caching守护进程吗? 它可能会有一个用户的负面caching,在这种情况下,运行/usr/sbin/nscd -i passwd会使caching无效并导致重新读取。
getent passwd工作,因为它绕过nscd。