LDAP 更改客户端上的用户传递

LDAP 更改客户端上的用户传递

我正在尝试允许 ldap 用户在客户端计算机上更改密码。我已经尝试过 pam 的所有我能想到的方法,以及/etc/ldap.conf& /etc/pam_ldap.conf。此时我陷入了困境。

客户端: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(请注意,由于使用该帐户进行测试,因此请保持简短,但是它会输出所有 ldap 用户):

sobrien4:Ffm1oHzwnLz0U:10000:12001:Sean O'Brien:/home/sobrien4:/bin/bash 

getent group显示所有 ldap 组。

/etc/pam.d/common-password(请注意,这只是最新的,我尝试了很多不同的选项):

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

也打开了 wireshark,服务器和客户端正在对话。

我在服务器上更改了密码。即运行 slapd 的服务器,我可以使用 ldap 用户登录并更改密码。我最初尝试从服务器复制工作配置,但没有成功。

我也尝试过克隆它,并且只更改了 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 似乎运行正常,只是无法更改密码。

答案1

我认为您需要允许 auth-bind 才能使其工作。我的意思是,用户连接到 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

答案2

我以前也遇到过同样的问题;为了解决这个问题,我需要删除use_authtok- 这允许我们使用...更改用户的密码passwd。我不确定如果您的身份验证链需要令牌,这会产生什么影响,但如果您只通过 LDAP 进行身份验证,这应该可以解决问题

答案3

我使用以下配置来支持 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 的配置应从最具体到最不具体,因为第一个匹配的条目获胜。我的配置如下:

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

(顺便说一句,我宁愿推荐原始的 OpenLDAP 管理指南而不是 Zytrax 书籍;该书无论如何都使用指南作为来源,但在偏离原文时经常会引入错误。)

相关内容