Einbinden eines Dateisystems für alle Prozesse innerhalb eines Dienstes/Webservers

Einbinden eines Dateisystems für alle Prozesse innerhalb eines Dienstes/Webservers

Ich versuche, eine lokale Website zu erstellen, die es mir ermöglicht, eine Datei zu entschlüsseln, das darin enthaltene Dateisystem zu mounten und einen systemd-Dienst zu starten, ohne auf die Konsole zuzugreifen. Der gestartete Dienst verwendet dann die Dateien innerhalb des gemounteten Dateisystems. Der Webserver führt derzeit meinen Python-Code über CGI aus, um eine einfache Website zum Entschlüsseln und Mounten dieses Dateisystems bereitzustellen. Ich habe in der Sudoers-Datei Ausnahmen für den WWW-Data-Benutzer gemacht, um bestimmte Befehle auszuführen, die ich in Python aufrufe.

Wenn ich die Datei über diese Website entschlüssele (die aufruft cryptsetup luksOpen), wird das entschlüsselte Gerät wie erwartet angezeigt:

> file /dev/mapper/service-volume
/dev/mapper/service-volume: symbolic link to ../dm-0

Aber wenn mein Python-Code versucht, dies zu mounten, service-volumewird es nur innerhalb des Apache-Arbeitsprozesses gemountet und ist für meine Shell oder andere Prozesse nicht verfügbar (XXX ist die PID des Apache-Arbeitsprozesses):

> mountpoint /mnt/service-folder
/mnt/service-folder is not a mountpoint
> cat /proc/XXX/mounts
...
/dev/mapper/service-volume /mnt/service-folder ext4 rw,relatime 0 0

Der Mount-Vorgang wird sudo /bin/mount /dev/mapper/service-volume /mnt/service-foldermit Pythons subprocess.run() ausgeführt.

Meine Fragen sind also: Was passiert da? Ist das eine Art Namespace-/Cgroups-Magie? Und wie kann dieser Ordner für einen anderen Dienst/Prozess als Apache selbst gemountet werden?


Weitere Informationen:

Es service-folderexistiert (ohne das gemountete Dateisystem):

> ls -la /mnt/service-folder
total 8
drwxr-xr-x 2 root root 4096 Jan 23 21:25 .
drwxr-xr-x 4 root root 4096 Jan 23 21:25 ..

verwandte Informationen