может кто-нибудь дать совет, как изменить пароль 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, я также получу следующее сообщение: «Вам необходимо немедленно сменить пароль (пароль устарел)»
Потом меняю пароль. Но если я попытаюсь войти еще раз, сообщение останется ...
Заранее спасибо.
P.S. Я также пробовал:
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
Ты используешь тень* атрибуты на сервере? Если да, убедитесь тень атрибут доступен для записи пользователем (ами), в противном случае атрибут 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-сервера)
overlay ppolicy
ppolicy_default "cn=default,ou=policies,dc=example,dc=com"
ppolicy_use_lockout
Некоторые из них можно хранить локально (ищите moduleload ppolicy.la
в конфигурации сервера LDAP).
Вероятно, вам также не хватает возможности разрешить пользователям менять пароли без Божьей силы. Вы можете сделать это, сбросив PAM или (более простой способ) разрешив пользователям изменять свой атрибут userPassword без аутентификации.
access to attrs=userPassword
by self write
by anonymous auth
by users none
access to * by * read
Если вам понадобится более точная информация, дайте мне знать :)