如何在linux下更改过期的LDAP用户密码?

有人可以给一个build议如何更改LDAP密码已过期?

我有一个LDAP用户,该用户的密码已过期:

# su user You are required to change your password immediately (password aged) su: Authentication token is no longer valid; new one required (Ignored) 

那么我可以使用'passwd'来更改密码。 但是,如果我尝试再次login,消息仍然显示。 如果我尝试使用sshlogin,我也会收到以下消息:“您需要立即更改密码(密码过期)”

然后我改变密码。 但是,如果我尝试再次login,消息仍然…

先谢谢你。

PS我也试过了:

 user@server$ ldappasswd Please enter your password: ldap_sasl_interactive_bind_s: Invalid credentials (49) additional info: SASL(-13): user not found: no secret in database 

你在服务器上使用shadow *属性吗? 如果是,请确保shadowlastchange属性可由用户写入,否则将更新userpassword属性,并且shadowLastchange保持未更改,在下次尝试时,客户端工具使用旧的shadowLastChange值计算密码时限,并认为密码需要是改变。

你错过了你的ldappasswd的一些属性

这只是一个例子

 ldappasswd -x -h <host> -D "<rootdn>" -w <rootdn_password> -s <new_password_for_user> "uid=user,ou=People,dc=example,dc=com" 

可能你正在使用一些策略(其中一些可以保存在LDAP中 – 例如你在LDAP服务器configuration中有类似的东西)

 overlay ppolicy ppolicy_default "cn=default,ou=policies,dc=example,dc=com" ppolicy_use_lockout 

其中一些可以保存在本地(在LDAP服务器configuration中查找moduleload ppolicy.la )。

也许你也没有能力让用户更改他们的密码,而无需神的力量。 您可以通过重置PAM或(更简单的方法)来允许用户在不进行身份validation的情况下更改其userPassword属性。

 access to attrs=userPassword by self write by anonymous auth by users none access to * by * read 

每当你需要更精确的,请让我知道:)