У меня CentOS6 с аутентификацией пользователя LDAP, с использованием OpenLDAP и SSSD. Я пытаюсь заставить пользователя сменить пароль. В соответствии с этот вопрос ServerFault Я пытался установить ShadowLastChange
к 0
, но это просто игнорируется, когда пользователь вошел в систему с помощью SSH.
В этом вопросе есть предупреждение, что это может вызвать ошибку бесконечного цикла запросов на смену пароля, но я не получил ни одного запроса ...
В этом вопросе было еще одно предположение,
Попробуйте атрибут passwordMustChange
Но когда я пытаюсь использовать его в своем .ldif
файл, я получаю Undefined attribute type (17)
ошибка
Я также пробовал использовать passwd -e username
для локального пользователя Unix, просто чтобы убедиться, что он работает, и да - этот локальный пользователь был вынужден изменить пароль при входе в систему SSH.
я обнаружил Password Policies
наложение в Документ OpenLDAP. Должно ли это помочь? (если да - это единственный способ решить мою проблему?)
Password Policies
похоже, тоже не помогает.
А.
Собственно, Политика паролей является работает. Сначала я попытался проверить это с помощью поддержка 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
Хорошо, я обнаружил, что если я установил pwdReset:TRUE
в записи пользователя он должен сменить пароль при входе в систему. Я думаю, что это зависит от PPolicy's pwdMustChange: TRUE
.
Он работает, но я не понимаю, почему это единственное решение, которое я смог найти. (и решение, которое Google не смог найти!) Более того, странно, что это изменение должно быть выполнено с ldapmodify
- JXplorer даже не показал мне этот атрибут, прежде чем я его изменил ...