Вопрос или проблема
С тех пор как я перешёл с 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 недоступен: Не удалось активировать удалённого пирa '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]: НЕУДАЧА ВХОДА 1 С tty3 ДЛЯ s0me0ne, Ошибка аутентификации
Я дважды проверил, что все экземпляры unix_chkpwd
, присутствующие в системе, имеют SUID root и являются жесткими ссылками на один и тот же бинарный файл:
$ ls -li /usr/bin/unix_chkpwd /sbin/unix_chkpwd
220202420 -rwsr-sr-x 1 root root 26672 18 nov 12.58 /sbin/unix_chkpwd
220202420 -rwsr-sr-x 1 root root 26672 18 nov 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
На данном этапе я совершенно застрял и чешу репу. Любые мысли приветствуются.
Ответ или решение
Проблема с удостоверением пользователя в Manjaro: Анализ и решение
Введение
Вы столкнулись с проблемой входа в виртуальную консоль в системе Manjaro, несмотря на успешную аутентификацию в других частях операционной системы. Ошибка, указывающая на «passwd check failed for user», указывает на конкретную проблему, связанную с модулем PAM (Pluggable Authentication Module), а именно с ресурсом unix_chkpwd
. В этом документе мы рассмотрим возможные причины данной ошибки и предложим пути ее решения.
Понимание проблемы
Согласно вашему описанию, вы получаете сообщение об ошибке при попытке входа в систему через getty
, и это сопровождается выводом от unix_chkpwd
, который указывает на сбой в проверке пароля для указанного пользователя. Рассматривая предоставленные данные, можно выделить несколько ключевых моментов:
-
Работа модуля PAM: Вы проверили, что
pamtester
успешно аутентифицирует пользователяs0me0ne
, что говорит о том, что настройки PAM корректны, а сам пользователь и пароль действительны. -
Файл конфигурации PAM: Убедитесь, что конфигурация PAM для сервиса
login
настроена правильно, проверьте файл/etc/pam.d/login
. Убедитесь, что там представлены необходимые модули, такие какpam_unix.so
и что они не закомментированы. -
SUID права для
unix_chkpwd
: Вы проверили, чтоunix_chkpwd
установлен как SUID и указывает на один и тот же бинарный файл. Это критически важно, так как неправильные права доступа могут привести к сбоям в аутентификации. -
Проблема с
systemd-homed
: Ваше сообщение об ошибке указывает на то, чтоsystemd-homed
не доступен. Если в вашей системе используетсяsystemd-homed
для управления домашними каталогами пользователей, убедитесь, что служба запущена, или рассмотрите возможность отключения данного модуля, если он не нужен.
Решение
-
Проверка и восстановление PAM конфигурации:
- Проверьте контент файла
/etc/pam.d/login
. Нормальная конфигурация может выглядеть следующим образом:auth required pam_env.so auth required pam_unix.so nullok # другие конфигурации... account required pam_unix.so
- Проверьте контент файла
-
Тестирование функций
unix_chkpwd
:- Вы уже провели тестирование с помощью
pamtester
, это положительный сигнал, показывающий, чтоunix_chkpwd
работает. Продолжите ли вы выполнять тесты с различными пользователями, чтобы убедиться, что ошибка связана конкретно с конфигурацией аутентификации?
- Вы уже провели тестирование с помощью
-
Перезагрузка службы
systemd-homed
:- Если этот модуль используется, попробуйте запустить его командой:
systemctl start systemd-homed
- Или перезагрузите систему, если это приемлемо.
- Если этот модуль используется, попробуйте запустить его командой:
-
Обновление системы:
- Ваша проблема может быть вызвана определенными багами или несовместимостями в текущих версиях пакетов. Выполните обновление системы:
sudo pacman -Syu
- Ваша проблема может быть вызвана определенными багами или несовместимостями в текущих версиях пакетов. Выполните обновление системы:
Заключение
Если вышеуказанные шаги не помогли решить проблему, возможно, имеет смысл рассмотреть создание нового пользователя для проверки. Проверьте наличие логов в /var/log/auth.log
и журналов системной активности, чтобы получить больше информации о происходящем в процессе аутентификации. Если требуется, не стесняйтесь обратиться к форумам поддержки Manjaro или сообществу Linux для дальнейших советов.