status=216/GROUP в systemd
Код 216/GROUP появляется, когда systemd не сумел разобрать или применить группу службы. Причина всегда в системе, а не в программе: группы нет, имя недопустимо, или в SupplementaryGroups= перечислена группа, которой не существует.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Группы из
Group=нет в системеЧасто пакет создаёт пользователя, но не группу с тем же именем, либо unit-файл перенесли с другой машины.
-
Одна из групп в
SupplementaryGroups=не существуетsystemd применяет список целиком: одна неверная запись валит запуск, даже если остальные группы есть. Опечатка в длинном списке незаметна.
-
Имя группы недопустимо
Как и с пользователем, systemd проверяет имя: пробелы, точки и слишком длинные имена отвергаются на этапе разбора.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
В журнале видно, какая именно группа не разобрана: «Failed to determine group credentials».
journalctl -xeu myapp.service --no-pager -n 30Показывает действующий список групп после всех drop-in.
systemctl show myapp.service -p Group -p SupplementaryGroupsПроверяет сразу несколько групп: отсутствующие просто не попадут в вывод.
getent group app dockerРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
Group= нет в системе- Почему происходит
- Часто пакет создаёт пользователя, но не группу с тем же именем, либо unit-файл перенесли с другой машины.
- Как проверить
-
Проверьте наличие группы.
getent group app
- Как исправить
-
Создайте группу и при необходимости включите в неё пользователя службы.
sudo groupadd --system app && sudo usermod -aG app app
SupplementaryGroups= не существует- Почему происходит
- systemd применяет список целиком: одна неверная запись валит запуск, даже если остальные группы есть. Опечатка в длинном списке незаметна.
- Как проверить
-
Проверьте каждую группу из списка по очереди.
systemctl show myapp.service -p SupplementaryGroups for g in docker redis app; do getent group "$g" >/dev/null || echo "нет группы: $g"; done
- Как исправить
- Уберите лишние записи или создайте недостающие группы.
- Почему происходит
- Как и с пользователем, systemd проверяет имя: пробелы, точки и слишком длинные имена отвергаются на этапе разбора.
- Как проверить
-
Посмотрите действующее значение.
systemctl show myapp.service -p Group
- Как исправить
- Приведите имя к допустимому виду: строчные буквы, цифры, дефис, подчёркивание.
Пример вывода
В SupplementaryGroups= указана несуществующая группа. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
× myapp.service - My application
Active: failed (Result: exit-code) since Mon 2026-09-14 13:22:07 MSK; 1s ago
Process: 6822 ExecStart=/usr/local/bin/myapp (code=exited, status=216/GROUP)
systemd[6822]: myapp.service: Failed to determine supplementary groups: No such process
systemd[1]: myapp.service: Main process exited, code=exited, status=216/GROUP
Связанные ошибки
- status=217/USER в systemd Код 217/USER означает, что systemd не смог определить или сменить пользователя из User=. Разбор причин: пользователя нет, имя недопустимо, конфликт с DynamicUser.
- Permission denied в журнале службы Отказ в доступе у службы systemd: права на файл, каталоги по пути, пользователь службы, параметры изоляции, SELinux и AppArmor.
- status=203/EXEC в systemd Код 203/EXEC означает, что systemd не смог выполнить программу из ExecStart=. Разбор причин: путь, права, интерпретатор, синтаксис оболочки.
- status=224/PAM в systemd Код 224/PAM: не удалось открыть сеанс PAM для службы. Обычно нет нужного файла настроек в /etc/pam.d.
- AppArmor: apparmor="DENIED" в журнале ядра Профиль AppArmor запретил операцию: как прочитать запись, найти профиль и поправить его правильно.
- Caddy не занимает порты 80 и 443 без прав Служба падает при открытии слушателя: нет возможности занимать привилегированные порты.
- Configuration file is marked world-inaccessible Предупреждение о правах на unit-файл: служба работает, но файл недоступен для чтения другим.
- Interactive authentication required при управлении службой systemctl требует аутентификации: обращение от непривилегированного пользователя через polkit. Как разрешить точечно.
Где встречается чаще всего
Источники
-
systemd.exec(5)
216 EXIT_GROUP: не удалось определить или сменить группу, см. Group= и SupplementaryGroups=. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено на unit с несуществующей группой в SupplementaryGroups=.