Можно ли изменить приватный tmp каталог в systemd?

Вопрос или проблема

Я запускаю некоторые программы как на Debian, так и на Fedora. Когда я выполняю ls в директории /tmp, я вижу много директорий с крайне длинным названием, например:

systemd-private-d85027...-bluetooth.service-qxzMGm
systemd-private-d85027...-chronyd.service-vSzXdP
systemd-private-d85027...-colord.service-LvpIL2
systemd-private-d85027...-fwupd.service-cbpodH
systemd-private-d85027...-httpd.service-rJIaIX

Это, кажется, связано с PrivateTmp, но как я могу удалить их или переместить в менее заметное место? (например, из /tmp/systemd-... в /tmp/.systemd-...) Я хочу постараться не изменять параметр PrivateTmp для каждой службы.

systemd захламляет монтирование и /tmp, для tmp путь жестко запрограммирован. Можно использовать отдельную директорию tmp, чтобы обойти это. Создайте директорию /temp и укажите её в вашем профиле для переменных окружения TMP и TMPDIR.

Или используйте devuan (форк Debian без systemd).

Ответ или решение

Система инициализации systemd, которая используется в современных дистрибутивах Linux, таких как Debian и Fedora, предлагает множество функций для управления службами. Одна из таких функций — это PrivateTmp, которая изолирует временные файлы для каждой службы, обеспечивая более высокую безопасность и предотвращая потенциальные конфликты. В результате, в каталоге /tmp появляются временные директории с именами вида systemd-private-xxxx-serviceName-xxxx.

Теория

1. PrivateTmp:
Функция PrivateTmp предназначена для создания изолированных пространств для временных файлов, которые автоматически очищаются при завершении работы службы. Это защищает данные одной службы от доступа со стороны другой и минимизирует риск перезаписи или случайного изменения критически важных временных файлов.

2. Жёсткая кодировка путей:
По умолчанию, каталоги PrivateTmp создаются systemd в /tmp и переименовать их нельзя, так как пути через systemd жестко прописаны на уровне исходного кода. Это также позволяет разграничивать доступ только к определенным службам без необходимости изменения системных конфигураций.

Пример

Рассмотрим типичный сценарий, когда администратор системы замечает огромное количество каталогов systemd-private-xxxx-serviceName-xxxx в своем /tmp каталоге. В этот момент он понимает, что это связано с системой разграничения временных файлов, но не может просто взять и переопределить эти пути.

Применение

1. Создание альтернативной директории для временных файлов:

Если перегруженность каталога /tmp действительно является проблемой и отвлекает, есть несколько обходных путей. Вы можете настроить указание на другую директорию временных файлов для вашего окружения:

  • Создание новой директории: Создайте новый каталог, например /temp.

  • Настройка переменных окружения: Чтобы побудить системы и приложения использовать именно этот каталог для временных файлов, вы можете установить переменные окружения TMP и TMPDIR в вашей оболочке. Это делается путем добавления следующих строк в ваш профиль, например в ~/.bashrc или /etc/profile:

    export TMP=/temp
    export TMPDIR=/temp

Это решение может быть особенно полезно для пользователей и процессов, которые явно полагаются на системные переменные для размещения временных файлов.

2. Изучение Devuan:
Если systemd мешает общему восприятию стандартов в вашей системе, и вы сомневаетесь в необходимости технической сложности, связанной с этими корпоративными стандартами, вы можете рассмотреть возможность перехода на дистрибутивы, которые не используют systemd, например, Devuan. Этот дистрибутив является форком Debian и предлагает широкие возможности для тех, кто хочет избежать вузов systemd.

3. Персонализация service файлов:
Хотя вы упоминали, что не хотите изменять опции PrivateTmp для каждой службы, служебные конфигурационные файлы для systemd позволяют делать это в случае острой необходимости. В директории /etc/systemd/system/ можно модифицировать service файлы, добавляя или изменяя опции по вашему усмотрению.

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

Заключение

Хотя direct изменения пути для временных файлов в systemd невозможны без изменения исходного кода, существует несколько тактик, которые можно применить для обхождения этой проблемы. Правильное управление и понимание вашей системы, как и использование гибкости Linux через переменные окружения и альтернативные дистрибутивы, открывает обширные возможности для настройки систем, чтобы они лучше подходили вашим конкретным нуждам.

Оцените материал
Добавить комментарий

Капча загружается...