Comportamento estranho com o namespace de montagem do Apache2 em Raspbian

0

Atualmente estou tentando entender por que o Apache2 (2.4.25-3 + deb9u2) em execução no Stretch Raspbian (Linux raspberrypi 4.9.41-v7 + # 1023 SMP ter 8 de agosto 16:00:15 BST 2017 armv7l GNU / Linux ) está tendo uma visão diferente do ponto de montagem da raiz do que, por exemplo, bash.

cat /proc/{PID of Apache2}/mountinfo fornece a seguinte saída:

129 127 179:2 / / ro,noatime shared:80 master:1 - ext4 /dev/root ro,data=ordered

cat /proc/self/mountinfo executado a partir do bash fornece a seguinte saída:

15 0 179:2 / / ro,noatime shared:1 - ext4 /dev/root ro,data=ordered

Tanto quanto eu entendi as explicações de man 7 mount_namespaces , link , link e man 5 proc a saída me diz que o Apache é um escravo do grupo de pares 1. Ele mesmo criou um grupo de pares compartilhado com o ID 80.

O que não entendo é por que isso acontece. Eu pensei que o systemd está no controle disso e então eu criei o arquivo /etc/systemd/system/apache2.service com o seguinte conteúdo:

.include /lib/systemd/system/apache2.service

[Service]
MountFlags=shared

Mas obviamente isso não ajudou. Também não há diferença quando removo a linha MountFlags.

Então, ao lado de entender por que a situação é assim, gostaria de saber se existe alguma maneira de impedir que o Apache se torne um escravo do grupo de peers de montagem raiz.

Além disso, se eu remontar o diretório raiz para ser gravável por mount -o remount,rw / no bash, isso não será propagado no namespace de montagem do Apache2. Exemplo, começando com o mountinfo acima:

# 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

Esta parte de qualquer recurso de segurança do Apache?

Atualização 1: Se eu (re) iniciar o serviço Apache2 enquanto o root estiver montado rw, os remontamentos serão propagados para o namespace de montagem do Apache2. Somente se o serviço Apache2 for iniciado enquanto o root estiver ativo, isso não funcionará!!

    
por Max Senft 16.10.2017 / 15:13

1 resposta

0

Remova a configuração PrivateTmp=true em apache2.service.

link :

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.

    
por 19.02.2018 / 06:32