В Systemd есть замечательная функция - частный временный каталог (/tmp
). Но из подробного руководства неясно, каковы правильные способы его использования и подводные камни реализации (почувствуйте, что руководство - это скорее спецификация для разработчиков и участников)
Включение этого параметра имеет побочный эффект в виде добавления зависимостей Requires = и After = для всех модулей монтирования, необходимых для доступа к / tmp и / var / tmp.
из https://www.freedesktop.org/software/systemd/man/systemd.exec.html#PrivateTmp=
Это немного загадочно для инсайдеров, не входящих в систему. Я предполагаю свою файловую систему, которая для простоты скажем, что у меня есть только /
, получит Requires=
, думаю, это оставлено как упражнение, чтобы выяснить, что для этого потребуется ... может, мне стоит поставить здесь тег домашнего задания? :)
Начиная с https://www.freedesktop.org/software/systemd/man/systemd.mount.html#x-systemd.requires=
Но это звучит неправильно. В нем говорится, что Requires = on mount используются только для иерархии. Я думаю.
Перейдем к https://www.freedesktop.org/software/systemd/man/systemd.unit.html#Requires=
Но это тоже ничего не объясняет. Это только говорит о том, что одному устройству может потребоваться другой. Я думаю.
Я (дико) предполагаю, что он использует https://www.freedesktop.org/software/systemd/man/systemd.exec.html#ReadWritePaths= Итак, в моем примере монтирование модуля systemd для /
будет Requires=[BindPaths=[/tmp/systemd-noise,/tmp]]
или как же пишут что в systemd-говорят?
давай спросим systemd
# systemctl show httpd
...
Requires=system.slice sysinit.target -.mount tmp.mount
...
RequiresMountsFor=/tmp /var/tmp
Тоже не очень полезно.
В основном пытаюсь осознать:
1) как именно systemd запрещает доступ к актуальному /tmp
в файловой системе. И
2) как процесс (скажем, cgi, запущенный из apache, запущенного systemd) может определить, где /tmp
это есть доступ к?