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 недоступен: Не удалось активировать удалённого пир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, который указывает на сбой в проверке пароля для указанного пользователя. Рассматривая предоставленные данные, можно выделить несколько ключевых моментов:

  1. Работа модуля PAM: Вы проверили, что pamtester успешно аутентифицирует пользователя s0me0ne, что говорит о том, что настройки PAM корректны, а сам пользователь и пароль действительны.

  2. Файл конфигурации PAM: Убедитесь, что конфигурация PAM для сервиса login настроена правильно, проверьте файл /etc/pam.d/login. Убедитесь, что там представлены необходимые модули, такие как pam_unix.so и что они не закомментированы.

  3. SUID права для unix_chkpwd: Вы проверили, что unix_chkpwd установлен как SUID и указывает на один и тот же бинарный файл. Это критически важно, так как неправильные права доступа могут привести к сбоям в аутентификации.

  4. Проблема с systemd-homed: Ваше сообщение об ошибке указывает на то, что systemd-homed не доступен. Если в вашей системе используется systemd-homed для управления домашними каталогами пользователей, убедитесь, что служба запущена, или рассмотрите возможность отключения данного модуля, если он не нужен.

Решение

  1. Проверка и восстановление PAM конфигурации:

    • Проверьте контент файла /etc/pam.d/login. Нормальная конфигурация может выглядеть следующим образом:
      auth        required      pam_env.so
      auth        required      pam_unix.so nullok
      # другие конфигурации...
      account     required      pam_unix.so
  2. Тестирование функций unix_chkpwd:

    • Вы уже провели тестирование с помощью pamtester, это положительный сигнал, показывающий, что unix_chkpwd работает. Продолжите ли вы выполнять тесты с различными пользователями, чтобы убедиться, что ошибка связана конкретно с конфигурацией аутентификации?
  3. Перезагрузка службы systemd-homed:

    • Если этот модуль используется, попробуйте запустить его командой:
      systemctl start systemd-homed
    • Или перезагрузите систему, если это приемлемо.
  4. Обновление системы:

    • Ваша проблема может быть вызвана определенными багами или несовместимостями в текущих версиях пакетов. Выполните обновление системы:
      sudo pacman -Syu

Заключение

Если вышеуказанные шаги не помогли решить проблему, возможно, имеет смысл рассмотреть создание нового пользователя для проверки. Проверьте наличие логов в /var/log/auth.log и журналов системной активности, чтобы получить больше информации о происходящем в процессе аутентификации. Если требуется, не стесняйтесь обратиться к форумам поддержки Manjaro или сообществу Linux для дальнейших советов.

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

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