Încerc să creez un site web local care să-mi permită să decriptez un fișier, să montez sistemul de fișiere conținut și să pornesc un serviciu systemd fără a accesa consola. Serviciul pornit utilizează apoi fișierele din sistemul de fișiere montat. Serverul web rulează în prezent codul meu python prin cgi pentru a servi un site web simplu pentru a decripta și a monta acel sistem de fișiere. Am făcut excepții în fișierul sudoers pentru ca utilizatorul www-data să execute anumite comenzi pe care le apelez în python.
Când decriptez fișierul folosind acest site web (care apelează cryptsetup luksOpen
) dispozitivul decriptat apare așa cum era de așteptat:
> fișierul /dev/mapper/service-volume
/dev/mapper/service-volume: link simbolic către ../dm-0
Dar când codul meu python încearcă să monteze asta serviciu-volum
este montat numai în cadrul procesului de lucru apache, indisponibil pentru shell-ul meu sau pentru alte procese (XXX este PID-ul procesului de lucru apache):
> mountpoint /mnt/service-folder
/mnt/service-folder nu este un punct de montare
> cat /proc/XXX/mounts
...
/dev/mapper/service-volume /mnt/service-folder ext4 rw,relatime 0 0
Operația de montare executată este sudo /bin/mount /dev/mapper/service-volume /mnt/service-folder
cu pythons subprocess.run().
Deci întrebările mele sunt: ce se întâmplă acolo? Este o magie pentru namespace/cgroups? Și cum poate fi montat acest folder pentru alt serviciu/proces decât apache însuși?
Informatii suplimentare:
The folder-serviciu
există (fără sistemul de fișiere montat):
> ls -la /mnt/service-folder
total 8
drwxr-xr-x 2 rădăcină rădăcină 4096 23 ian 21:25 .
drwxr-xr-x 4 root root 4096 23 ian 21:25 ..