Вопрос или проблема
Я запускаю некоторые программы как на 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 через переменные окружения и альтернативные дистрибутивы, открывает обширные возможности для настройки систем, чтобы они лучше подходили вашим конкретным нуждам.