У меня просто был странный опыт. Я создал нового пользователя на сервере (Ubuntu 10.04, установлен Plesk), а затем хотел установить пароль. Посмотрите на этот вывод:
# useradd dev
# passwd dev
Enter new password:
Retype new password:
Geben Sie ein neues UNIX-Passwort ein:
Geben Sie das neue UNIX-Passwort erneut ein:
Пришлось вводить пароль 4 раза. Последние 2 подсказки на немецком языке. Пароль для двух последних запросов должен отличаться от пароля, заданного первым. Что тут происходит?
update: # cat /etc/pam.d/passwd # # Файл конфигурации PAM для службы Shadow `passwd '#
@include common-password
# cat /etc/pam.d/system-auth
cat: /etc/pam.d/system-auth: Datei oder Verzeichnis nicht gefunden
(/etc/pam.d/system-auth не существует) Btw. Могу ли я каким-то образом настроить весь такой вывод на английский, не меняя языковой стандарт системы (что может повлиять на другие вещи)?
update2:
# cat /etc/pam.d/common-password
# here are the per-package modules (the "Primary" block)
password optional pam_plesk.so try_first_pass
password [success=1 default=ignore] pam_unix.so obscure sha512
# here's the fallback if no module succeeds
password requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
password required pam_permit.so
# and here are more per-package modules (the "Additional" block)
# end of pam-auth-update config
Похоже, виноват Plesk. Верный?
В passwd
команда использует PAM (подключаемые модули аутентификации), которые запрашивают у пользователя пароли и обновляют хэши паролей в /etc/shadow
и / или любые другие серверы аутентификации, которые вы настроили. PAM для passwd
команда настроена в /etc/pam.d/passwd
, который в вашем случае просто включает /etc/pam.d/common-password
.
Вы можете прочитать краткое введение о PAM с man 7 pam
.
Сейчас я не знаком с Plesk, и я все еще немного любитель, когда дело касается PAM, но я был бы склонен поменять местами первые две непустые строки без комментариев, чтобы pam_unix
приходит раньше pam_plesk
:
...
# here are the per-package modules (the "Primary" block)
password [success=1 default=ignore] pam_unix.so obscure sha512
password optional pam_plesk.so try_first_pass
# here's the fallback if no module succeeds
password requisite pam_deny.so
...
Я вам скажу почему. Ты видишь это try_first_pass
вариант после pam_plesk
? Это означает, что если этот конкретный модуль запускается после другого, уже запрашивающего пароль пользователя, то он должен попытаться повторно использовать этот пароль вместо повторного запроса. Однако поскольку pam_plesk
запускается первым, нет уже введенного пароля, поэтому вы получите первые два запроса. А потом pam_unix
работает, и у него нет try_first_pass
либо, поэтому вы получите два других запроса.
В качестве альтернативы вы можете попробовать добавить try_first_pass
к pam_unix
линия.
Сделайте резервную копию common-passwd
на всякий случай, чтобы вы могли отменить изменения, если они не работают. У меня нет доступа к Plesk, поэтому я не могу самостоятельно протестировать предлагаемые изменения.