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

status=216/GROUP в systemd

Код 216/GROUP появляется, когда systemd не сумел разобрать или применить группу службы. Причина всегда в системе, а не в программе: группы нет, имя недопустимо, или в SupplementaryGroups= перечислена группа, которой не существует.

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

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

  1. Группы из Group= нет в системе

    Часто пакет создаёт пользователя, но не группу с тем же именем, либо unit-файл перенесли с другой машины.

  2. Одна из групп в SupplementaryGroups= не существует

    systemd применяет список целиком: одна неверная запись валит запуск, даже если остальные группы есть. Опечатка в длинном списке незаметна.

  3. Имя группы недопустимо

    Как и с пользователем, 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

Решение

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

1. Группы из Group= нет в системе
Почему происходит
Часто пакет создаёт пользователя, но не группу с тем же именем, либо unit-файл перенесли с другой машины.
Как проверить
Проверьте наличие группы.
getent group app
Как исправить
Создайте группу и при необходимости включите в неё пользователя службы.
sudo groupadd --system app && sudo usermod -aG app app
2. Одна из групп в SupplementaryGroups= не существует
Почему происходит
systemd применяет список целиком: одна неверная запись валит запуск, даже если остальные группы есть. Опечатка в длинном списке незаметна.
Как проверить
Проверьте каждую группу из списка по очереди.
systemctl show myapp.service -p SupplementaryGroups
for g in docker redis app; do getent group "$g" >/dev/null || echo "нет группы: $g"; done
Как исправить
Уберите лишние записи или создайте недостающие группы.
3. Имя группы недопустимо
Почему происходит
Как и с пользователем, 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
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено на unit с несуществующей группой в SupplementaryGroups=.
    собственная проверка, systemd 255
    сверено 15 сентября 2026