systemd Linux (systemd)

systemd: сервис не имеет доступа к файлу из-за ProtectSystem

  • Обновлено
  • Чтение ≈ 2 минуты

Краткий ответ

Служба systemd не может записать файл из-за параметра ProtectSystem: sandbox unit делает некоторые каталоги доступными только для чтения. Решение — выделить минимально необходимый каталог для записи, не отключая всю защиту.

В этой статье
  1. Что происходит и когда это важно
  2. Возможные причины и как их отличить
  3. Пошаговая диагностика и исправление
  4. Команды из инструкции с пояснениями
  5. Как проверить результат
  6. Если проблема не устранена

#Что происходит и когда это важно

Приложение возвращает Read-only file system или Permission denied при записи в системный каталог после усиления unit. Права владельца на диске могут быть корректными.

#Возможные причины и как их отличить

Возможная причинаКак узнатьЧто делать
ProtectSystem перекрывает записиРежим full/strict запрещает запись в системные каталоги в пространстве имён сервиса.Ошибка есть лишь при запуске через systemd, но не при запуске от пользователя вне sandbox.Сверить ProtectSystem и исключения.
Недостаточны обычные праваКаталог принадлежит другому пользователю или read-only по иной причине.Ошибка воспроизводится и вне systemd либо есть ошибки диска.Проверить права и mount, не открывать chmod 777.
Рабочие данные размещены не тамПриложение пытается писать в /usr или рядом с исполняемым файлом.Путь записи — каталог пакета или /usr.Перенести изменяемые данные в /var/lib или другой предусмотренный путь.

#Пошаговая диагностика и исправление

  1. Найдите конкретный путь отказаОткройте терминал и посмотрите journalctl -u ИМЯ.service -b -n 100 --no-pager. Запишите точный путь, для которого ошибка записи, и её формулировку. Не делайте вывод, что виноват ProtectSystem, по одному слову permission.
  2. Просмотрите итоговые ограниченияВыполните systemctl show ИМЯ.service -p ProtectSystem -p ReadWritePaths -p ReadOnlyPaths -p DynamicUser и systemctl cat ИМЯ.service. Параметры описывают защиту файловой системы именно процесса этой службы. Учитывайте, что другие опции тоже могут ограничивать доступ.
  3. Проверьте носитель и права без измененийВыполните findmnt -T /ПУТЬ_ЗАПИСИ и ls -ld /ПУТЬ_ЗАПИСИ с реальным путём. findmnt показывает монтирование и опции, ls — права. Если весь раздел стал read-only из-за I/O ошибок, прекращайте правки unit и копируйте данные.
  4. Подберите правильный каталог храненияДля служебных данных используйте предусмотренное приложением расположение (часто /var/lib/имя), а для журналов штатный journald или /var/log/имя. Если программа пишет в /usr, предпочтительно изменить её конфигурацию, а не предоставлять право записи в весь /usr.
  5. Разрешайте только подтверждённый путьАдминистратор после резервной копии и согласования создаёт переопределение через sudo systemctl edit ИМЯ.service и, если действительно нужно, добавляет в секции [Service] ReadWritePaths=/КОНКРЕТНЫЙ/КАТАЛОГ с настоящим путём. Эта настройка не исправляет POSIX-права и не отменяет read-only состояние нижележащей файловой системы. Не устанавливайте ProtectSystem=false без обоснования.
  6. Примените и проверьтеПосле сохранения администратор выполняет sudo systemctl daemon-reload и согласованный sudo systemctl restart ИМЯ.service. Запустите штатную операцию приложения, которая ранее падала, и проверьте журнал. Если появилась другая ошибка, верните переопределение и ищите отдельную причину.

#Команды из инструкции с пояснениями

Linux · Терминал (Bash)Команда
Просмотр фактических ограничений.
systemctl show ИМЯ.service -p ProtectSystem -p ReadWritePaths -p ReadOnlyPaths -p DynamicUser
Linux · Терминал (Bash)Команда
Просмотр типа и параметров монтирования указанного пути.
findmnt -T /ПУТЬ_ЗАПИСИ
Linux · Терминал (Bash)Команда
Права каталога без изменения.
ls -ld /ПУТЬ_ЗАПИСИ

#Как проверить результат

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

#Если проблема не устранена

Если запись не работает даже вне службы, проверьте владельца, ACL и состояние диска. Передайте администратору только пути и ошибку, не изменяйте разрешения рекурсивно.

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.