[devel] Смена глобального пароля

Evgeny Sinelnikov sin на altlinux.ru
Пт Мар 3 12:27:08 MSK 2017


Здравствуйте,

Хочу обсудить проблему смены глобального пароля (то есть сетевого
пароля через LDAP, Kerberos и др. возможные механизмы) по мотивам
#33163 - Смена Kerberos-пароля для pam_krb5:
https://bugzilla.altlinux.org/show_bug.cgi?id=33163

В сущности, проблемы выглядит следующим образом - привожу цитату из
багзилы по поводу настроек PAM, по умолчанию, для смены пароля через
pam_krb5:

> > Вообще, зачем применять такую связку?
> >  password       required        pam_passwdqc.so config=/etc/passwdqc.conf
> >  password       [success=2 default=ignore]      pam_tcb.so use_authtok shadow
> > fork prefix=$2y$ count=8 nullok write_to=tcb
> >  password       requisite       pam_succeed_if.so uid >= 500 quiet
> >  password       required        pam_krb5.so use_authtok
> >
> > Весь её смысл в том, что если Kerberos-пароль изменён успешно, то заменить,
> > заодно, и локальный пароль... Но нужно ли так делать???
>
> Тут написано другое: сперва поменять локальный пароль с помощью pam_tcb, а если
> это не получилось и uid >= 500, то поменять нелокальный пароль с помощью
> pam_krb5.  Странно если это не работает.

Хочу обратить внимание на то, что текущий сценарий смены глобальных
паролей опирается на весьма сомнительную особенность, характерную для
unix-систем и совершенно не очевидную для пользователей корпоративных
решений.

Дело в том, что механизмы аутентификации и авторизации, вообще говоря,
совершенно независимы и явно доступны для настройки. Таким образом, у
глобального пользователя может быть, как локальный, так и глобальный
пароли.

И у нас, как и везде, применяется, по умолчанию, гибридная схема смены пароля:
- если локальный пароль подошёл, то меняем его, а если нет... то
меняем глобальный.

Кроме того, что эта схема сейчас, вообще, не работает, возникает более
существенный вопрос (допустим она может заработать): "А зачем мы её
применяем по, умолчанию?"

_________________________________________

Что же, собственно, происходит?
1. Вместо смены глобального пароля, меняется локальный. В этом
основная проблема.
2. Вопреки ожиданиям, текущий пароль может запрашиваться дважды.
Собственно, только неправильно задав один вид пароля, можно перейти к
попытке проверить другой вид пароля.
3. Вывод строк запроса на ввод текущего (а иногда и нового) пароля,
для каждого PAM модуля может быть разным. В связи с чем мы имеем не
рабочий userpasswd:
https://bugzilla.altlinux.org/show_bug.cgi?id=33097

При этом, если поменять порядок модулей, и первым поставить проверку
глобального пароля, вместо локального, то всё вроде начинает
отрабатывать.

__________________________________________

В связи с перечисленным предлагаю обсудить "правильный" набор настроек
PAM и, вообще, подход к смене глобальных паролей.

Может быть, не стоит пытаться "угадывать" какой пароль мы меняем, а
ввести для каждого типа отдельный вариант настройки вроде
passwd.local, passwd.sssd?
https://bugzilla.altlinux.org/show_bug.cgi?id=33163#c4

Ну, или, по крайней мере, если используется настройка с глобальными
паролями, в первую очередь пытаться изменить глобальный? Или, вообще,
только глобальный, а локальный изменять отдельной утилитой
passwd.local?


-- 
Sin (Sinelnikov Evgeny)


Подробная информация о списке рассылки Devel