使用密码策略覆盖不能在OpenLDAP中强制执行密码更改

我在Debian Stable的OpenLDAP上实现了密码策略覆盖。 服务器端和策略按预期工作。 但是,到期后我不能强制用户更改密码。 用户login,会收到一条消息,表明他们的密码已过期,必须立即更改。 然而无论是在本地login还是SSHlogin,用户都被踢出了。 客户端正在使用libnss_ldap,pam_ldap。 pwdMustChangepwdAllowUserChange都设置为true 。 使用passwd更改密码也按预期工作。

客户端configuration文件

/etc/nsswitch.conf中:

 passwd: files ldap group: files ldap shadow: files 

将/etc/pam.d/common-account:

 account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so account [success=1 default=ignore] pam_ldap.so account requisite pam_deny.so account required pam_permit.so 

将/etc/pam.d/common-auth:

 auth [success=2 default=ignore] pam_unix.so nullok_secure auth [success=1 default=ignore] pam_ldap.so use_first_pass auth requisite pam_deny.so auth required pam_permit.so 

/etc/pam.d/common-password:

 password [success=2 default=ignore] pam_unix.so obscure sha512 password [success=1 user_unknown=ignore default=die] pam_ldap.so try_first_pass 

/etc/pam.d/common-password:

 session [default=1] pam_permit.so session requisite pam_deny.so session required pam_permit.so session required pam_mkhomedir.so umask=0022 skel=/etc/skel session required pam_unix.so session optional pam_ldap.so 

/etc/libnss-ldap.conf:

 base dc=testldap,dc=example,dc=com uri ldap://192.168.56.102/ ldap_version 3 pam_lookup_policy yes pam_password exop 

/etc/pam_ldap.conf:

 base dc=testldap,dc=example,dc=com uri ldap://192.168.56.102/ ldap_version 3 pam_lookup_policy yes pam_password exop 

有任何想法吗?

我已经解决了这个问题。 唯一需要做的是在common-account文件中添加new_authtok_reqd=done做LDAP行。 所以,生成的文件如下所示,一切正常工作:

 account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so account [success=1 new_authtok_reqd=done default=ignore] pam_ldap.so account requisite pam_deny.so account required pam_permit.so