В настоящее время я пытаюсь понять, почему Apache2 (2.4.25-3 + deb9u2) работает на Raspbian Stretch (Linux raspberrypi 4.9 .41-v7 + # 1023 SMP Вт, 8 августа 16:00:15 BST 2017 armv7l (GNU / Linux) имеет другое представление о корневой точке монтирования, чем, например, bash.
cat / proc / {PID Apache2} / mountinfo
дает следующий результат:
129 127 179:2 / / ro,noatime shared:80 master:1 - ext4 /dev/root ro,data=ordered
cat / proc / self / mountinfo
, выполненный из bash, дает следующий результат:
15 0 179:2 / / ro,noatime shared:1 - ext4 /dev/root ro,data=ordered
Насколько я понимаю поняли объяснения от man 7 mount_namespaces
, https://lwn.net/Articles/689856/ , https://lwn.net/Articles/690679/ и man 5 proc
вывод говорит мне, что Apache является подчиненным для группы одноранговых узлов 1. Он сам создал общую одноранговую группу с идентификатором 80.
Я не понимаю, почему что происходит. Я думал, что systemd контролирует это, и поэтому создал файл /etc/systemd/system/apache2.service
со следующим содержанием:
.include /lib/systemd/system/apache2.service
[Service]
MountFlags=shared
Но, очевидно, это не помогло. Также нет никакой разницы, когда я удаляю строку MountFlags.
Итак, чтобы понять, почему ситуация такая, я хотел бы знать, есть ли способ предотвратить превращение Apache в подчинение корневой монтируемой одноранговой группы.
Кроме того, если я перемонтирую корневой каталог, чтобы он был доступен для записи с помощью mount -o remount, rw /
в bash, это не распространяется в пространство имен монтирования Apache2. Пример, начиная с mountinfo
сверху:
# mount -o remount,rw /
# cat /proc/self/mountinfo
15 0 179:2 / / rw,noatime shared:1 - ext4 /dev/root rw,data=ordered
# cat /proc/{PID of Apache2}/mountinfo
129 127 179:2 / / ro,noatime shared:80 master:1 - ext4 /dev/root rw,data=ordered
Является ли это частью какой-либо функции безопасности Apache?
Обновление 1. Если я (повторно) запускаю службу Apache2, когда root установлен rw, remounts будут перенесены в пространство имен монтирования Apache2. Только если служба Apache2 запущена, а root - ro, она не работает ?!
Elimine la configuración PrivateTmp=true
en apache2.service.
https://www.freedesktop.org/software/systemd/man/systemd.exec.html:
If true, sets up a new file system namespace for the executed processes and mounts private /tmp and /var/tmp directories inside it that is not shared by processes outside of the namespace.