SystemdDoctor
служба не работает хранилище права изоляция

Объектное хранилище не запускается: нет прав на каталоги данных

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

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

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

  1. Каталоги принадлежат не пользователю службы

    После переноса или распаковки архива владельцем остаётся root, а служба работает от своего пользователя.

  2. Изоляция unit-файла закрывает путь к данным

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

  3. В каталоге данных есть посторонние файлы

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

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Сообщения службы о проверке каталогов.

journalctl -u minio -n 30 --no-pager

Может ли пользователь службы писать в каталог.

sudo -u minio-user test -w /srv/data1 && echo запись есть || echo записи нет

Пользователь и параметры изоляции службы.

systemctl show minio -p User -p ProtectSystem -p ReadWritePaths

Решение

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

1. Каталоги принадлежат не пользователю службы
Почему происходит
После переноса или распаковки архива владельцем остаётся root, а служба работает от своего пользователя.
Как проверить
Посмотрите владельца каталогов и пользователя службы.
sudo ls -ld /srv/data* 2>/dev/null
systemctl show minio -p User -p Group
Как исправить
Передайте каталоги пользователю службы. Для новых каталогов удобнее объявлять их через StateDirectory=: права выставит systemd.
2. Изоляция unit-файла закрывает путь к данным
Почему происходит
Параметры защиты системы и домашних каталогов делают пути только для чтения, и служба не может писать.
Как проверить
Посмотрите параметры изоляции и попробуйте записать от имени службы.
systemctl show minio -p ProtectSystem -p ProtectHome -p ReadWritePaths
sudo -u minio-user test -w /srv/data1 && echo запись есть || echo записи нет
Как исправить
Добавьте каталоги данных в ReadWritePaths=. Это правильнее, чем отключать защиту целиком.
[Service]
ProtectSystem=strict
ReadWritePaths=/srv/data1 /srv/data2
3. В каталоге данных есть посторонние файлы
Почему происходит
Проверка при запуске отвергает каталог с чужим содержимым, чтобы не смешать данные разных хранилищ.
Как проверить
Посмотрите содержимое каталогов.
sudo ls -a /srv/data1 | head
Как исправить
Используйте пустые каталоги под данные или отдельные точки монтирования. Каталог, где уже что-то лежит, брать под хранилище не стоит.

Пример вывода

Каталог данных принадлежит root, служба работает от своего пользователя. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

minio[5300]: Unable to initialize backend: file access denied, drive: /srv/data1
systemd[1]: minio.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: minio.service: Failed with result 'exit-code'.

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

  • Permission denied в журнале службы Отказ в доступе у службы systemd: права на файл, каталоги по пути, пользователь службы, параметры изоляции, SELinux и AppArmor.
  • Read-only file system в журнале службы Служба не может писать: файловая система только для чтения. Разбор: параметры изоляции unit, монтирование ro, ошибки файловой системы.
  • status=238/STATE_DIRECTORY в systemd Код 238/STATE_DIRECTORY: не удалось подготовить постоянный каталог службы в /var/lib из StateDirectory=.
  • Operation not permitted в журнале службы Операция запрещена: не хватает возможностей процесса, мешает seccomp или модуль безопасности. Отличие от Permission denied.
  • status=209/STDOUT в systemd Код 209/STDOUT: systemd не смог настроить стандартный вывод службы. Чаще всего виноват путь в StandardOutput=append: или file:.
  • status=210/CHROOT в systemd Код 210/CHROOT: не удалось сменить корневой каталог из RootDirectory= или подключить образ RootImage=.
  • status=218/CAPABILITIES в systemd Код 218/CAPABILITIES: не удалось применить набор возможностей процесса из CapabilityBoundingSet= или AmbientCapabilities=.
  • status=229/SELINUX_CONTEXT в systemd Код 229/SELINUX_CONTEXT: не удалось определить или сменить контекст SELinux для процесса службы.

Источники

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