我试图让ldap用户在客户端机器上更改密码。 我已经尝试过每个我能想到的/etc/ldap.conf和/etc/pam_ldap.conf pam。 在这一点上,我卡住了。
客户端:Ubuntu 11.04
服务器:Debian 6.0
目前的输出是这样的:
sobrien4@T-E700F-1:~$ passwd passwd: Authentication service cannot retrieve authentication info passwd: password unchanged
/var/log/auth.log在命令中给出了这个:
May 9 10:49:06 T-E700F-1 passwd[18515]: pam_unix(passwd:chauthtok): user "sobrien4" does not exist in /etc/passwd May 9 10:49:06 T-E700F-1 passwd[18515]: pam_ldap: ldap_simple_bind Can't contact LDAP server May 9 10:49:06 T-E700F-1 passwd[18515]: pam_ldap: reconnecting to LDAP server... May 9 10:49:06 T-E700F-1 passwd[18515]: pam_ldap: ldap_simple_bind Can't contact LDAP server
getent passwd |grep sobrien4 (注意,由于使用该帐户进行testing,因此输出所有LDAP用户):
sobrien4:Ffm1oHzwnLz0U:10000:12001:Sean O'Brien:/home/sobrien4:/bin/bash
getent group显示所有ldap组。
/etc/pam.d/common-password (注意这只是最新的,我尝试了很多不同的select):
password required pam_cracklib.so retry=3 minlen=8 difok=3 password [success=1 default=ignore] pam_unix.so use_authtok md5 password required pam_ldap.so use_authtok password required pam_permit.so
popup打开wireshark以及服务器和客户端正在谈话。
我有在服务器上更改密码的工作。 IE是运行slapd的服务器,我可以用ldap用户login并更改密码。 我试图从服务器初始复制工作configuration,没有骰子。
我也尝试克隆它,只是改变IP和主机,并没有去。 我的猜测是客户端没有通过ip或主机名授权来更改通行证。
关于slapd conf,我在一个指导中看到了这个,试了一下:
access to attrs=loginShell,gecos by dn="cn=admin,dc=cengineering,dc=etb" write by self write by * read access to * by dn="cn=admin,dc=cengineering,dc=etb" write by self write by * read
所以ldap似乎工作正常,只是不能更改密码。
我认为你需要允许auth-binding才能正常工作。 通过这个,我的意思是用户连接到ldap(或pam代理)并显示他/她的凭据。 如果ldap服务器喜欢它所看到的,那么authbind成功,PAM知道你的用户/传递对是正确的。 请看zytrax书中的例子
调整你的ACL有一个类似的部分
# ACL1 access to attrs=userpassword by self write by anonymous auth by group.exact="cn=itpeople,ou=groups,dc=example,dc=com" write by * none
我以前经历过这个完全相同的问题; 为了解决这个问题,我需要删除use_authtok – 这允许我们然后改变用户的密码使用passwd …我不确定如果您的身份validation链需要令牌会有什么影响,但是这应该做的伎俩,如果你只有通过LDAPauthentication
我正在使用以下configuration来支持PAM密码:
password requisite pam_cracklib.so try_first_pass retry=3 password sufficient pam_ldap.so try_first_pass use_authtok password sufficient pam_unix.so sha512 shadow nullok use_authtok try_first_pass password required pam_deny.so
另外请记住,ACL应该从最具体到最不具体的configuration,因为第一个匹配的条目胜利。 我看起来像这样:
access to attrs=userPassword by dn="cn=admin,dc=hell" write by set="[cn=admins,ou=access groups,ou=groups,dc=hell]/memberUid & user/uid" write by anonymous auth by self write by * none
(顺便说一句,我宁愿推荐原创的OpenLDAPpipe理指南,而不是Zytrax的书;本书无论如何都使用指南作为源,但是经常会在引用错误的同时偏离原文。)