Mount Namespace
Osnovne informacije
Mount namespace je funkcionalnost Linux kernela koja omogućava izolaciju tačaka montiranja fajl sistema koje vidljive su grupi procesa. Svaki mount namespace ima svoj set tačaka montiranja fajl sistema, i promene u tačkama montiranja u jednom namespace-u ne utiču na druge namespace-ove. Ovo znači da procesi koji se izvršavaju u različitim mount namespace-ovima mogu imati različite poglede na hijerarhiju fajl sistema.
Mount namespace-ovi su posebno korisni u kontejnerizaciji, gde svaki kontejner treba da ima svoj fajl sistem i konfiguraciju, izolovane od drugih kontejnera i host sistema.
Kako radi:
Kada se kreira novi mount namespace, inicijalizuje se sa kopijom tačaka montiranja iz roditeljskog namespace-a. Ovo znači da, pri kreiranju, novi namespace deli isti pogled na fajl sistem kao i njegov roditelj. Međutim, bilo kakve naknadne promene u tačkama montiranja unutar namespace-a neće uticati na roditelja ili druge namespace-ove.
Kada proces modifikuje tačku montiranja unutar svog namespace-a, kao što je montiranje ili demontiranje fajl sistema, promena je lokalna za taj namespace i ne utiče na druge namespace-ove. Ovo omogućava svakom namespace-u da ima svoju nezavisnu hijerarhiju fajl sistema.
Procesi mogu da se premeštaju između namespace-ova koristeći
setns()
sistemski poziv, ili da kreiraju nove namespace-ove koristećiunshare()
iliclone()
sistemski pozive saCLONE_NEWNS
zastavicom. Kada proces pređe u novi namespace ili ga kreira, počeće da koristi tačke montiranja povezane sa tim namespace-om.File deskriptori i inodi se dele između namespace-ova, što znači da ako proces u jednom namespace-u ima otvoren file deskriptor koji pokazuje na fajl, može proslediti taj file deskriptor procesu u drugom namespace-u, i oba procesa će pristupiti istom fajlu. Međutim, putanja do fajla može biti različita u oba namespace-a zbog razlika u tačkama montiranja.
Lab:
Kreiranje različitih Namespace-ova
CLI
Montiranjem nove instance /proc
fajl sistema, korišćenjem parametra --mount-proc
, obezbeđujete da nova mount namespace ima tačan i izolovan prikaz informacija o procesima specifičnim za tu namespace.
Docker
Proverite u kojem se namespace-u nalazi vaš proces
Da biste proverili u kojem se namespace-u nalazi vaš proces, možete koristiti sledeću komandu:
Ova komanda će vam prikazati simboličke veze koje predstavljaju različite namespace-ove u kojima se vaš proces nalazi.
Pronađite sve Mount namespace-ove
```bash nsenter -m TARGET_PID --pid /bin/bash ``` Takođe, možete **ući u drugi procesni namespace samo ako ste root**. I **ne možete** **ući** u drugi namespace **bez deskriptora** koji na njega ukazuje (poput `/proc/self/ns/mnt`).
Zato što su novi mount-ovi dostupni samo unutar namespace-a, moguće je da namespace sadrži osetljive informacije koje su dostupne samo iz njega.
Montiraj nešto
Reference
Last updated