Puncte:0

Montarea unui sistem de fișiere pentru toate procesele din cadrul unui serviciu/server web

drapel it

Î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 ..
paladin avatar
drapel id
Pe lângă faptul că este periculos să faci astfel de lucruri folosind un server web, există directorul tău `/mnt/service-folder`?
Kaemmelot avatar
drapel it
Da, vedeți întrebarea mea actualizată. De asemenea, vă rugăm să rețineți că serverul web a montat cu succes sistemul de fișiere, dar numai în cadrul procesului de lucru al serverului web.
paladin avatar
drapel id
De obicei, într-o configurație implicită, un server web face chrooting la `/var/www`, aceasta înseamnă că toate celelalte fișiere/directoare nu sunt vizibile pentru un server web. Poate că asta are un impact pentru tine? Încercați să montați în `/var/www/yoursite/service-folder`.
Kaemmelot avatar
drapel it
Apache nu face croot. Și chiar dacă ar face chroot acolo, operația de montare (deja reușită) s-ar monta într-un subdirector `/var/www`. M-am uitat în aceste directoare și nu am găsit nimic.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.