SystemdDoctor
PrivateDevices= [Service]

PrivateDevices= и защита устройств в systemd

Выдаёт службе урезанный /dev: только базовые псевдоустройства вроде null, zero и random. Физические устройства становятся недоступны.

Что делает

Большинству прикладных служб доступ к устройствам не нужен, и параметр включается безболезненно. Он же закрывает возможность читать диск напрямую в обход прав файловой системы.

Рядом стоят родственные защиты: ProtectKernelTunables= запрещает менять настройки ядра через /proc и /sys, ProtectKernelModules= — загружать модули, ProtectClock= — менять системное время. Для точечного доступа к конкретному устройству есть DeviceAllow=.

Где ставится. В секции [Service].

Значения

ЗначениеЧто происходит
PrivateDevices=yesурезанный /dev без физических устройств.
ProtectKernelTunables=yesзапрет изменения настроек ядра.
ProtectKernelModules=yesзапрет загрузки модулей ядра.
DeviceAllow=/dev/ttyUSB0 rwточечный доступ к устройству.

Пример

Служба, которой нужен только один последовательный порт.

[Service]
PrivateDevices=yes
DeviceAllow=/dev/ttyUSB0 rw
ProtectKernelTunables=yes
ProtectKernelModules=yes

Порядок важен по смыслу: сначала закрываем всё, потом открываем одно нужное устройство.

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

Службам, работающим с оборудованием (мониторинг диска, работа с портами), параметр ломает доступ.

Вместе с ним включается запрет получения новых привилегий: это может сломать setuid-программы внутри.

Нарушение запрета на изменение настроек ядра проявляется как отказ в доступе к /proc — причину легко не связать с unit-файлом.

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

  • Permission denied в журнале службыОтказ в доступе у службы systemd: права на файл, каталоги по пути, пользователь службы, параметры изоляции, SELinux и AppArmor.
  • status=226/NAMESPACE в systemdКод 226/NAMESPACE: не удалось настроить пространства имён монтирования, UTS или IPC. Частая причина — путь в ReadOnlyPaths= или ProtectHome=.
  • Read-only file system в журнале службыСлужба не может писать: файловая система только для чтения. Разбор: параметры изоляции unit, монтирование ro, ошибки файловой системы.

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

Источники

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