有人可以给出如何更改已过期的 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”更改密码。但是如果我再次尝试登录,该消息仍然会出现。如果我尝试 ssh 登录,我还会收到以下消息:“您需要立即更改密码(密码已过期)”
然后我更改了密码。但是如果我再次尝试登录,消息仍然存在...
先感谢您。
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
答案1
你的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 服务器配置中获得类似的内容)
overlay ppolicy
ppolicy_default "cn=default,ou=policies,dc=example,dc=com"
ppolicy_use_lockout
其中一些可以保存在本地(在 LDAP 服务器配置中查找moduleload ppolicy.la
)。
您可能还缺少允许用户在没有神力的情况下更改密码的功能。您可以通过重置 PAM 来实现,或者(更简单的方法)允许用户在未经身份验证的情况下更改其 userPassword 属性。
access to attrs=userPassword
by self write
by anonymous auth
by users none
access to * by * read
如果您需要更精确的信息,请告诉我:)
答案2
你正在用吗阴影*服务器上的属性?如果是,请确保影子最后更改属性可由用户写入,否则用户密码属性将得到更新而 shadowLastchange 保持不变,在下一次尝试时,客户端工具将使用旧的 shadowLastChange 值计算密码年龄并认为密码需要更改。