status=241/CONFIGURATION_DIRECTORY в systemd
Код 241/CONFIGURATION_DIRECTORY относится к каталогу настроек в /etc. Он отличается от остальных каталогов службы: процессу он даётся только для чтения, а создаётся один раз и не удаляется при остановке.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
/etc подключён только для чтения
На системах с неизменяемым корнем (образы, встраиваемые сборки, часть контейнеров) /etc доступен лишь для чтения, и создать в нём каталог нельзя.
-
Служба пытается писать в этот каталог в работе
Каталог настроек подключается процессу только для чтения. Программа, которая хочет сохранить туда свой файл, получит отказ уже после запуска — а неверные права на сам каталог дают этот код при старте.
-
Режим каталога задан неразбираемым значением
ConfigurationDirectoryMode=принимает права в восьмеричном виде. Запись вида0o750или750xотвергается.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Показывает путь и причину отказа.
journalctl -xeu myapp.service --no-pager -n 20Тип монтирования /etc: доступен ли он для записи вообще.
findmnt /etcДействующие настройки каталога.
systemctl show myapp.service -p ConfigurationDirectory -p ConfigurationDirectoryModeРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- На системах с неизменяемым корнем (образы, встраиваемые сборки, часть контейнеров) /etc доступен лишь для чтения, и создать в нём каталог нельзя.
- Как проверить
-
Посмотрите параметры монтирования корня и /etc.
findmnt / /etc mount | grep " / "
- Как исправить
- Создайте каталог заранее при сборке образа или уберите параметр, храня настройки в другом месте.
- Почему происходит
- Каталог настроек подключается процессу только для чтения. Программа, которая хочет сохранить туда свой файл, получит отказ уже после запуска — а неверные права на сам каталог дают этот код при старте.
- Как проверить
-
Посмотрите права каталога и поищите в журнале отказы записи.
ls -ld /etc/myapp journalctl -u myapp.service -n 50 --no-pager | grep -i "read-only\|denied"
- Как исправить
-
Изменяемые данные храните в каталоге состояния через
StateDirectory=, а в /etc оставьте только то, что служба читает.
- Почему происходит
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 (Ubuntu 24.04)
Воспроизведено в образе с корнем только для чтения.