Назад | Перейти на главную страницу

LDAP с SSSD: заставить пользователя сменить пароль - ShadowLastChange не работает

У меня CentOS6 с аутентификацией пользователя LDAP, с использованием OpenLDAP и SSSD. Я пытаюсь заставить пользователя сменить пароль. В соответствии с этот вопрос ServerFault Я пытался установить ShadowLastChange к 0, но это просто игнорируется, когда пользователь вошел в систему с помощью SSH.

В этом вопросе есть предупреждение, что это может вызвать ошибку бесконечного цикла запросов на смену пароля, но я не получил ни одного запроса ...

В этом вопросе было еще одно предположение,

Попробуйте атрибут passwordMustChange

Но когда я пытаюсь использовать его в своем .ldif файл, я получаю Undefined attribute type (17) ошибка

Я также пробовал использовать passwd -e username для локального пользователя Unix, просто чтобы убедиться, что он работает, и да - этот локальный пользователь был вынужден изменить пароль при входе в систему SSH.

РЕДАКТИРОВАТЬ

я обнаружил Password Policies наложение в Документ OpenLDAP. Должно ли это помочь? (если да - это единственный способ решить мою проблему?)

РЕДАКТИРОВАТЬ2

Password Policies похоже, тоже не помогает.

РЕДАКТИРОВАТЬ3

А.

Собственно, Политика паролей является работает. Сначала я попытался проверить это с помощью поддержка HP предлагает - но ppolicy не отображается в файле журнала.

Но потом я нашел хороший способ проверить Политику - установить pwdAllowUserChange к FALSEи убедитесь, что пользователь не может изменить пароль с помощью passwd, с сообщением об ошибке от сервера. Или изменить pwdMaxAge к 1, войдите в систему и увидите, что пользователю предлагается изменить пароль.

Тем не мение, pwdMustChange: TRUE все еще не помогает. После изменения пароля пользователя (либо с помощью клиента JXplorer, либо из оболочки Unix ldapmodify), пользователь не получает уведомления о смене пароля.

Может я не устанавливаю пароль как положено? в slapo-ppolicy они говорят

pwdMustChange

   This  attribute  specifies  whether  users must change their passwords when
   they first bind to the directory after a password is set or  reset  by  the
   administrator,  or not.  If pwdMustChange has a value of "TRUE", users must
   change their passwords when they first bind to the directory after a  pass-
   word  is  set  or  reset  by  the  administrator. 

Кажется, есть разница между set и reset пароль. Я пытался set. Может быть reset помогло бы мне. Как я могу сбросить пароль?

Вот моя политика:

dn: cn=default,ou=policies,dc=***,dc=com
cn: default
objectClass: pwdPolicy
objectClass: person
objectClass: top
pwdAttribute: userPassword
pwdCheckQuality: 2
pwdExpireWarning: 604800
pwdFailureCountInterval: 30
pwdInHistory: 2
pwdLockout: TRUE
pwdLockoutDuration: 172800
pwdMinAge: 0
pwdMinLength: 6
pwdMustChange: TRUE
pwdSafeModify: FALSE
sn: dummy value
pwdAllowUserChange: FALSE
pwdGraceAuthNLimit: 0
pwdMaxFailure: 5
pwdMaxAge: 999999

Б.

(В ответ на вопросы Кэмерона Керра в комментариях)

Это CentOS 6.6. И это мои файлы /etc/pam.d/system-auth*:

# cat  /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_fprintd.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_sss.so use_first_pass
auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_sss.so
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3 type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    sufficient    pam_sss.so use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     optional      pam_oddjob_mkhomedir.so umask=0077
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_sss.so

# cat  /etc/pam.d/system-auth-ac
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_fprintd.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_sss.so use_first_pass
auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_sss.so
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3 type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    sufficient    pam_sss.so use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     optional      pam_oddjob_mkhomedir.so umask=0077
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_sss.so

EDIT4

Хорошо, я обнаружил, что если я установил pwdReset:TRUE в записи пользователя он должен сменить пароль при входе в систему. Я думаю, что это зависит от PPolicy's pwdMustChange: TRUE.

Он работает, но я не понимаю, почему это единственное решение, которое я смог найти. (и решение, которое Google не смог найти!) Более того, странно, что это изменение должно быть выполнено с ldapmodify - JXplorer даже не показал мне этот атрибут, прежде чем я его изменил ...