SystemdDoctor
DynamicUser= [Service]

DynamicUser=yes: временный пользователь для службы

Заставляет systemd создать временного пользователя и группу на время работы службы и удалить их после остановки. Пользователь не существует в системе между запусками.

Что делает

Это удобный способ изолировать службу без ручного заведения пользователя: идентификатор выделяется динамически, домашнего каталога нет, доступ к файловой системе ограничен. Вместе с параметром автоматически включается ряд защит: приватный /tmp, запрет записи в системные каталоги.

Главное следствие: у файлов, созданных службой, владелец существует только пока служба работает. Поэтому постоянные данные нужно хранить только в каталогах, которые выдаёт systemd (StateDirectory= и родственные) — он сам следит за их владельцем между запусками.

Где ставится. В секции [Service]. Несовместим с явным User=.

Значения

ЗначениеЧто происходит
yesвременный пользователь создаётся на время работы службы.
noпо умолчанию: пользователь берётся из User= или служба работает от root.

По умолчанию: no

Пример

Изолированная служба без заведения пользователя вручную.

[Service]
DynamicUser=yes
StateDirectory=myapp
CacheDirectory=myapp
ExecStart=/usr/local/bin/myapp --data /var/lib/myapp

Каталоги выдаёт systemd, и их владелец обновляется при каждом запуске. Без этого данные оказались бы недоступны после смены идентификатора.

Типичные ошибки

Вместе с User= параметры противоречат друг другу: запуск завершится кодом 217/USER.

Файлы вне каталогов службы останутся с владельцем, которого больше нет: доступ к ним пропадёт после перезапуска.

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

Служба не может обращаться к домашним каталогам и к чужим данным — в этом и смысл, но при переносе существующей службы это неожиданно.

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

  • status=217/USER в systemdКод 217/USER означает, что systemd не смог определить или сменить пользователя из User=. Разбор причин: пользователя нет, имя недопустимо, конфликт с DynamicUser.
  • status=238/STATE_DIRECTORY в systemdКод 238/STATE_DIRECTORY: не удалось подготовить постоянный каталог службы в /var/lib из StateDirectory=.
  • Permission denied в журнале службыОтказ в доступе у службы systemd: права на файл, каталоги по пути, пользователь службы, параметры изоляции, SELinux и AppArmor.

Рядом стоящие параметры

Источники

  • systemd.exec(5) официальная документация
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04) собственная проверка
    сверено 15 сентября 2026