Created attachment 8729 [details] wrong-message Тестовый стенд: education-9-x86-64-default ~ # rpm -qa | grep lightdm lightdm-1.30.0-alt8.x86_64 liblightdm-gobject-1.30.0-alt8.x86_64 lightdm-gtk-greeter-2.0.1-alt15.x86_64 education-9-x86-64-default ~ # 1) Выполнить блокировку аккаунта по времени, изменить время для доступа test: # vim /etc/pam.d/system-auth account required pam_time.so debug 2) # vim /etc/security/time.conf Добавить администратором строчку для запрещения работы test на время (указать ближайшее текущее время, в несколько минут) и сохранить: lightdm;*;test;!Al1530-1535 3) Попытаться зайти в запрещенное время. Результат: в окне входа Сообщение о неправильном пароле - см. скриншот. Ожидаемый результат: сообщение должно быть корректным, о том, что пользователю запрещен вход.
А что говорит `pamtester lightdm test auethenticate` ?
(Ответ для manowar@altlinux.org на комментарий #1) > А что говорит `pamtester lightdm test auethenticate` ? В запрещенное время: # pamtester lightdm test authenticate Password: pamtester: successfully authenticated
Простите, в _запрещённое_ время он пустил? Почему?
(Ответ для manowar@altlinux.org на комментарий #3) > Простите, в _запрещённое_ время он пустил? Почему? В графической сессии - НЕ пустил. А почему pamtester такое возвращает, я не знаю.
Мне кажется, что-то не так с /etc/pam.d/lightdm или теми файлами, на которые он ссылается. Если pamtester даёт результат, отличный от ожидаемого, то это, на мой взгляд, большая проблема, чем неправильное сообщение в графике. Проверьте ещё, пожалуйста, pamtester login test authenticate и просто консольный вход (login в "боевом" режиме).
(Ответ для manowar@altlinux.org на комментарий #5) > Мне кажется, что-то не так с /etc/pam.d/lightdm или теми файлами, на которые > он ссылается. Если pamtester даёт результат, отличный от ожидаемого, то это, > на мой взгляд, большая проблема, чем неправильное сообщение в графике. > > Проверьте ещё, пожалуйста, > > pamtester login test authenticate # pamtester login test authenticate Password: pamtester: successfully authenticated > > и просто консольный вход (login в "боевом" режиме). Вход через консоль успешный. При этом вход через графику в запрещенное время невозможен.
(Ответ для Vera Blagoveschenskaya на комментарий #6) > > и просто консольный вход (login в "боевом" режиме). > > Вход через консоль успешный. Значит, на стенде наверняка серьёзные проблемы с конфигурацией PAM. Я предлагаю сделать так: отредактировать /etc/pam.d/login и /etc/pam.d/system-auth таким образом, чтобы аутентификация консоль работала так, как требуется. После этого сделать идентичную конфигурацию в /etc/pam.d/lightdm. И если проблема с неправильным сообщением сохранится и в этом случае — будем заниматься ей.
(Ответ для manowar@altlinux.org на комментарий #7) > (Ответ для Vera Blagoveschenskaya на комментарий #6) > > > и просто консольный вход (login в "боевом" режиме). > > > > Вход через консоль успешный. > > Значит, на стенде наверняка серьёзные проблемы с конфигурацией PAM. > > Я предлагаю сделать так: отредактировать /etc/pam.d/login и > /etc/pam.d/system-auth таким образом, чтобы аутентификация консоль работала > так, как требуется. После этого сделать идентичную конфигурацию в > /etc/pam.d/lightdm. И если проблема с неправильным сообщением сохранится и в > этом случае — будем заниматься ей. Я эту проблему вижу уже не в первый раз (некорректное сообщение при попытке входа через графику), она воспроизводится на разных дистрибутивах с _дефолтной_ конфигурацией. Приведите пример правильных, на ваш взгляд, конфигураций.
(Ответ для Vera Blagoveschenskaya на комментарий #8) > Приведите пример правильных, на ваш взгляд, конфигураций. Вот сейчас развернул стенд и думал проверять по инструкции, которую вы привели выше. И вот только обратил внимание: > 1) Выполнить блокировку аккаунта по времени, изменить время для доступа test: > # vim /etc/pam.d/system-auth > account required pam_time.so debug Понятно, почему pamtester давал ложное срабатывание на authenticate (нужно было проверять именно на account). Но не понятно, почему работал консольный вход.
А, и с консольным входом всё понятно: > сохранить: > lightdm;*;test;!Al1530-1535 > 3) Попытаться зайти в запрещенное время. Получается, что ограничение специально было введено только для входа через lightdm.
Но в целом проблему я увидел. Буду разбираться.
Разобрался. Тривиального фикса тут быть не может. Дело в том, что pam_time.so сам по себе никаких сообщений в случае ошибки не отправляет — он только выдаёт код ошибки. Правда, по этому коду можно получить сообщение через функцию pam_strerror() и lightdm даже делает это, но клиенту — гритеру, — полученное сообщение не отправляет (напомню, что lightdm клиент-серверный). Чтобы починить, придётся добавить отправку этой строки на клиент, расширив протокол взаимодействия клиента и сервера.
И slick-greeter это тоже касается.