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