Не удалось войти в виртуальную консоль на Manjaro: “unix_chkpwd[129255]: сбой проверки пароля для пользователя”

Вопрос или проблема

С тех пор как я перешел с Ubuntu на Manjaro несколько месяцев назад, у меня возникла странная проблема: я не мог войти в виртуальную консоль, всегда получая сообщение “Неверный логин”, хотя вся остальная аутентификация работала отлично. Сегодня я наконец решил это исправить, но не преуспел.

getty, кажется, работает нормально и вызывает login как и ожидалось.

$ ps auxww |grep getty
root      129384  0.0  0.0   7176  3880 tty3     Ss+  22:47   0:00 /sbin/agetty -o -p -- \u --noclear - linux

Я проверил, что нет остатков /etc/nologin или /var/run/nologin, и связанные конфиги (/etc/login.defs, /etc/security/*) остались совершенно нетронутыми и являются вполне разрешительными настройками дистрибутива по умолчанию.

Тем не менее, когда я пытаюсь войти в VC, я получаю (после включения debug опции для некоторых модулей PAM):

dic 06 22:46:53 s0me0ne login[128494]: pam_systemd_home(login:auth): pam-systemd-homed аутентификация
dic 06 22:46:53 s0me0ne login[128494]: pam_systemd_home(login:auth): Новое соединение sd-bus (system-bus-pam-systemd-home-128494) открыто.
dic 06 22:46:53 s0me0ne login[128494]: pam_systemd_home(login:auth): systemd-homed недоступен: не удалось активировать удаленный пир 'org.freedesktop.home1': запрос на активацию не удался: неизвестная единица
dic 06 22:46:53 s0me0ne login[128494]: pam_unix(login:auth): имя пользователя [s0me0ne] получено
dic 06 22:46:55 s0me0ne unix_chkpwd[129255]: проверка пароля для пользователя (s0me0ne) не удалась
dic 06 22:46:55 s0me0ne login[128494]: pam_unix(login:auth): ошибка аутентификации; logname=LOGIN uid=0 euid=0 tty=/dev/tty3 ruser= rhost=  user=s0me0ne
dic 06 22:46:56 s0me0ne login[128494]: FAILED LOGIN 1 FROM tty3 FOR s0me0ne, Ошибка аутентификации

Я дважды проверил, что все экземпляры unix_chkpwd, присутствующие в системе, имеют SUID root и являются жесткими ссылками на один и тот же бинарный файл:

$ ls -li /usr/bin/unix_chkpwd /sbin/unix_chkpwd                                                                                                                                               
220202420 -rwsr-sr-x 1 root root 26672 18 нояб 12.58 /sbin/unix_chkpwd
220202420 -rwsr-sr-x 1 root root 26672 18 нояб 12.58 /usr/bin/unix_chkpwd

Затем я вспомнил старую добрую pamtester и решил попробовать:

$ pamtester -v login s0me0ne authenticate                                                                                                                                                                                                                                                                 pamtester: вызывает pam_start(login, s0me0ne, ...)
pamtester: выполняет операцию - аутентификация
Пароль: 
pamtester: успешно аутентифицирован

Сработало как по волшебству, и PAM доволен, ошибок в логах нет.

Последнее, что я попробовал, это вручную протестировать функциональность unix_chkpwd:

$ mkfifo /tmp/pw
$ echo -ne 'mypassword\0' >/tmp/pw &
[1] 137112
$ /sbin/unix_chkpwd s0me0ne nullok </tmp/pw
[1]  + done       echo -ne 'mypassword\0' > /tmp/pw
$ echo $?
0

На этом этапе я совершенно застрял и чешу репу. Буду рад любым мыслям.

Оказалось, что это была нелепая ошибка конфигурации. Клавиатурная раскладка консоли в /etc/vconsole.conf была установлена на хорватскую, которая QWERTZ, а моя клавиатура — QWERTY. Поэтому, когда я вводил свое имя пользователя, которое не содержит “y” и “z”, казалось, что раскладка клавиатуры вполне нормальная. Но “y” в моем пароле заменялось на “z”.

Все остальные тесты проводились в X11, и мои xkb раскладки клавиатуры были QWERTY и работали отлично.

Ответ или решение

Проблема с входом в виртуальную консоль на Manjaro: ошибка "unix_chkpwd[129255]: проверка пароля для пользователя не удалась"

Введение

Пользователи, которые переходит с одной операционной системы на другую, часто сталкиваются с различными проблемами, связанными с конфигурацией и настройками системы. Одной из таких проблем является невозможность входа в виртуальную консоль в дистрибутиве Manjaro, при этом появляется сообщение об ошибке "Login incorrect". В данной статье мы рассмотрим основные шаги по устранению этой проблемы на примере пользователя, которому не удалось войти в систему, несмотря на правильный ввод пароля.

Анализ проблемы

На первый взгляд, ситуация может показаться запутанной, особенно если все другие методы аутентификации работают без сбоев. Главные моменты, которые следует рассмотреть:

  1. Запуск процесса getty: Проверяем, правильно ли работает процесс getty, который отвечает за открытие консоли и запуск логина. В представленном случае процесс работает корректно:

    $ ps auxww |grep getty
    root      129384  0.0  0.0   7176  3880 tty3     Ss+  22:47   0:00 /sbin/agetty -o -p -- \u --noclear - linux
  2. Проверка наличия файлов nologin: Отсутствие файлов /etc/nologin и /var/run/nologin подтверждает, что доступ к системе не заблокирован.

  3. Настройки PAM: Аутентификация через PAM (Pluggable Authentication Modules) была проверена с помощью pamtester, где аутентификация прошла успешно:

    $ pamtester -v login s0me0ne authenticate

    Это свидетельствует о том, что основная аутентификация работает, и причины проблемы следует искать в другом месте.

  4. Проверка unix_chkpwd: Проводится тестирование самого механизма unix_chkpwd, который показывает успешную аутентификацию при ручном выполнении, что указывает на отсутствие проблем с самим механизмом проверки пароля.

Причина проблемы

В ходе более глубокого анализа было обнаружено, что виновником ситуации является ошибка в конфигурации системной клавиатуры. Файл /etc/vconsole.conf был настроен на использование хорватской раскладки клавиатуры (QWERTZ), в то время как пользователь использовал раскладку QWERTY. Это привело к неправильному вводу пароля, так как буква "y" в пароле заменялась на "z".

Для исправления данной проблемы рекомендуется:

  1. Открыть файл конфигурации /etc/vconsole.conf в текстовом редакторе с повышенными правами.

    sudo nano /etc/vconsole.conf
  2. Изменить или добавить строку, указывающую на правильную раскладку клавиатуры:

    KEYMAP=us
  3. Сохранить изменения и перезагрузить систему, чтобы настройки вступили в силу.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...