SystemdDoctor
служба не работает pam права учётные данные

status=224/PAM в systemd

Код 224/PAM появляется, когда в unit-файле задан PAMName=, а открыть сеанс PAM не получилось. Чаще всего указанного файла настроек нет в /etc/pam.d или один из его модулей отказывает для пользователя службы.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Нет файла настроек PAM с указанным именем

    PAMName=myapp заставляет systemd искать /etc/pam.d/myapp. Без этого файла сеанс открыть нельзя.

  2. Модуль PAM отказывает пользователю службы

    В цепочке настроек могут быть ограничения по времени, по группам или по числу сеансов (pam_limits, pam_access, pam_time). Для служебного пользователя без оболочки и домашнего каталога часть модулей даёт отказ.

  3. PAMName= задан вместе с DynamicUser=yes

    Временный пользователь не существует в базе учётных записей, и модули PAM, ожидающие настоящего пользователя, не находят его.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Показывает шаг PAM и сообщение библиотеки.

journalctl -xeu myapp.service --no-pager -n 30

Действующие значения параметров, от которых зависит этот шаг.

systemctl show myapp.service -p PAMName -p User -p DynamicUser

Список доступных файлов настроек PAM: сразу видно, есть ли нужный.

sudo ls -l /etc/pam.d/

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Нет файла настроек PAM с указанным именем
Почему происходит
PAMName=myapp заставляет systemd искать /etc/pam.d/myapp. Без этого файла сеанс открыть нельзя.
Как проверить
Проверьте имя и наличие файла.
systemctl show myapp.service -p PAMName
ls -l /etc/pam.d/
Как исправить
Либо укажите существующее имя (для служб обычно подходит PAMName=login или собственный файл), либо создайте файл настроек. Если PAM не нужен, уберите параметр — большинству служб он не требуется.
2. Модуль PAM отказывает пользователю службы
Почему происходит
В цепочке настроек могут быть ограничения по времени, по группам или по числу сеансов (pam_limits, pam_access, pam_time). Для служебного пользователя без оболочки и домашнего каталога часть модулей даёт отказ.
Как проверить
Посмотрите, какой модуль отказал: журнал системы обычно называет его прямо.
journalctl -u myapp.service -n 40 --no-pager | grep -i pam
sudo cat /etc/pam.d/myapp
Как исправить
Уберите из цепочки модули, неприменимые к служебному пользователю, или составьте отдельный минимальный файл настроек для этой службы.
3. PAMName= задан вместе с DynamicUser=yes
Почему происходит
Временный пользователь не существует в базе учётных записей, и модули PAM, ожидающие настоящего пользователя, не находят его.
Как проверить
Проверьте оба параметра.
systemctl show myapp.service -p PAMName -p DynamicUser
Как исправить
Выберите одно: динамический пользователь без PAM либо обычный пользователь с PAM.

Пример вывода

Указано имя PAM, для которого нет файла настроек. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

× myapp.service - My application
     Active: failed (Result: exit-code) since Mon 2026-09-14 21:30:44 MSK; 1s ago
    Process: 21000 ExecStart=/usr/local/bin/myapp (code=exited, status=224/PAM)

systemd[21000]: myapp.service: Failed to set up PAM session: Critical error - immediate abort
systemd[21000]: myapp.service: Failed at step PAM spawning /usr/local/bin/myapp: Operation not permitted

Связанные ошибки

  • status=217/USER в systemd Код 217/USER означает, что systemd не смог определить или сменить пользователя из User=. Разбор причин: пользователя нет, имя недопустимо, конфликт с DynamicUser.
  • status=216/GROUP в systemd Код 216/GROUP: systemd не смог определить или сменить группу из Group= или SupplementaryGroups=. Причины и как проверить.
  • Permission denied в журнале службы Отказ в доступе у службы systemd: права на файл, каталоги по пути, пользователь службы, параметры изоляции, SELinux и AppArmor.
  • AppArmor: apparmor="DENIED" в журнале ядра Профиль AppArmor запретил операцию: как прочитать запись, найти профиль и поправить его правильно.
  • Caddy не занимает порты 80 и 443 без прав Служба падает при открытии слушателя: нет возможности занимать привилегированные порты.
  • Configuration file is marked world-inaccessible Предупреждение о правах на unit-файл: служба работает, но файл недоступен для чтения другим.
  • Interactive authentication required при управлении службой systemctl требует аутентификации: обращение от непривилегированного пользователя через polkit. Как разрешить точечно.
  • MongoDB: Unable to lock file mongod.lock mongod не запускается: остался файл блокировки после аварийного завершения или каталог принадлежит не тому пользователю.

Где встречается чаще всего

Источники

  • systemd.exec(5)
    224 EXIT_PAM: не удалось открыть сеанс PAM, см. PAMName=.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено с PAMName=нет-такого-файла и с PAMName=login при DynamicUser=yes.
    собственная проверка, systemd 255
    сверено 15 сентября 2026