Вопрос или проблема
С тех пор как я перешел с 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". В данной статье мы рассмотрим основные шаги по устранению этой проблемы на примере пользователя, которому не удалось войти в систему, несмотря на правильный ввод пароля.
Анализ проблемы
На первый взгляд, ситуация может показаться запутанной, особенно если все другие методы аутентификации работают без сбоев. Главные моменты, которые следует рассмотреть:
-
Запуск процесса 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
-
Проверка наличия файлов nologin: Отсутствие файлов
/etc/nologin
и/var/run/nologin
подтверждает, что доступ к системе не заблокирован. -
Настройки PAM: Аутентификация через PAM (Pluggable Authentication Modules) была проверена с помощью
pamtester
, где аутентификация прошла успешно:$ pamtester -v login s0me0ne authenticate
Это свидетельствует о том, что основная аутентификация работает, и причины проблемы следует искать в другом месте.
-
Проверка unix_chkpwd: Проводится тестирование самого механизма
unix_chkpwd
, который показывает успешную аутентификацию при ручном выполнении, что указывает на отсутствие проблем с самим механизмом проверки пароля.
Причина проблемы
В ходе более глубокого анализа было обнаружено, что виновником ситуации является ошибка в конфигурации системной клавиатуры. Файл /etc/vconsole.conf
был настроен на использование хорватской раскладки клавиатуры (QWERTZ), в то время как пользователь использовал раскладку QWERTY. Это привело к неправильному вводу пароля, так как буква "y" в пароле заменялась на "z".
Для исправления данной проблемы рекомендуется:
-
Открыть файл конфигурации
/etc/vconsole.conf
в текстовом редакторе с повышенными правами.sudo nano /etc/vconsole.conf
-
Изменить или добавить строку, указывающую на правильную раскладку клавиатуры:
KEYMAP=us
-
Сохранить изменения и перезагрузить систему, чтобы настройки вступили в силу.
Заключение
Проблемы с входом в виртуальную консоль могут варьироваться от сложных до тривиальных, как в данном случае. Правильная настройка клавиатурной раскладки является критически важной для успешной аутентификации и возможна, что данная ситуация может быть типичной для пользователей, переходящих на новые дистрибутивы. Стремитесь всегда проверять конфигурационные файлы и системные настройки при возникновении подобного рода проблем. В дальнейшем, чтобы избежать путаницы, рекомендуется поддерживать единообразие в настройках клавиатуры как в виртуальной консоли, так и в графическом окружении.