SystemdDoctor
служба не работает каталоги настройки права

status=241/CONFIGURATION_DIRECTORY в systemd

Код 241/CONFIGURATION_DIRECTORY относится к каталогу настроек в /etc. Он отличается от остальных каталогов службы: процессу он даётся только для чтения, а создаётся один раз и не удаляется при остановке.

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

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

  1. /etc подключён только для чтения

    На системах с неизменяемым корнем (образы, встраиваемые сборки, часть контейнеров) /etc доступен лишь для чтения, и создать в нём каталог нельзя.

  2. Служба пытается писать в этот каталог в работе

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

  3. Режим каталога задан неразбираемым значением

    ConfigurationDirectoryMode= принимает права в восьмеричном виде. Запись вида 0o750 или 750x отвергается.

Диагностика

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

Показывает путь и причину отказа.

journalctl -xeu myapp.service --no-pager -n 20

Тип монтирования /etc: доступен ли он для записи вообще.

findmnt /etc

Действующие настройки каталога.

systemctl show myapp.service -p ConfigurationDirectory -p ConfigurationDirectoryMode

Решение

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

1. /etc подключён только для чтения
Почему происходит
На системах с неизменяемым корнем (образы, встраиваемые сборки, часть контейнеров) /etc доступен лишь для чтения, и создать в нём каталог нельзя.
Как проверить
Посмотрите параметры монтирования корня и /etc.
findmnt / /etc
mount | grep " / "
Как исправить
Создайте каталог заранее при сборке образа или уберите параметр, храня настройки в другом месте.
2. Служба пытается писать в этот каталог в работе
Почему происходит
Каталог настроек подключается процессу только для чтения. Программа, которая хочет сохранить туда свой файл, получит отказ уже после запуска — а неверные права на сам каталог дают этот код при старте.
Как проверить
Посмотрите права каталога и поищите в журнале отказы записи.
ls -ld /etc/myapp
journalctl -u myapp.service -n 50 --no-pager | grep -i "read-only\|denied"
Как исправить
Изменяемые данные храните в каталоге состояния через StateDirectory=, а в /etc оставьте только то, что служба читает.
3. Режим каталога задан неразбираемым значением
Почему происходит
ConfigurationDirectoryMode= принимает права в восьмеричном виде. Запись вида 0o750 или 750x отвергается.
Как проверить
Посмотрите значение режима.
systemctl show myapp.service -p ConfigurationDirectory -p ConfigurationDirectoryMode
Как исправить
Укажите права в обычном виде: ConfigurationDirectoryMode=0750.

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

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

× myapp.service - My application
     Active: failed (Result: exit-code) since Mon 2026-09-15 09:28:55 MSK; 1s ago
    Process: 4900 ExecStart=/usr/local/bin/myapp (code=exited, status=241/CONFIGURATION_DIRECTORY)

systemd[1]: myapp.service: Failed to set up special execution directory in /etc: Read-only file system

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

  • status=238/STATE_DIRECTORY в systemd Код 238/STATE_DIRECTORY: не удалось подготовить постоянный каталог службы в /var/lib из StateDirectory=.
  • Read-only file system в журнале службы Служба не может писать: файловая система только для чтения. Разбор: параметры изоляции unit, монтирование ro, ошибки файловой системы.
  • status=226/NAMESPACE в systemd Код 226/NAMESPACE: не удалось настроить пространства имён монтирования, UTS или IPC. Частая причина — путь в ReadOnlyPaths= или ProtectHome=.
  • status=233/RUNTIME_DIRECTORY в systemd Код 233/RUNTIME_DIRECTORY: не удалось подготовить каталог службы в /run из RuntimeDirectory=. Права, режим, удаление при остановке.
  • AppArmor: apparmor="DENIED" в журнале ядра Профиль AppArmor запретил операцию: как прочитать запись, найти профиль и поправить его правильно.
  • Caddy не занимает порты 80 и 443 без прав Служба падает при открытии слушателя: нет возможности занимать привилегированные порты.
  • Configuration file is marked executable Предупреждение о правах: unit-файл помечен исполняемым. Откуда берётся и почему это стоит исправить.
  • Configuration file is marked world-inaccessible Предупреждение о правах на unit-файл: служба работает, но файл недоступен для чтения другим.

Источники

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