PID Namespace
Basiese Inligting
Die PID (Process IDentifier) naamruimte is 'n kenmerk in die Linux-kernel wat proses-isolasie bied deur 'n groep prosesse te voorsien van hul eie stel unieke PIDs, afsonderlik van die PIDs in ander naamruimtes. Dit is veral nuttig in konteinering, waar proses-isolasie noodsaaklik is vir sekuriteit en hulpbronbestuur.
Wanneer 'n nuwe PID-naamruimte geskep word, word die eerste proses in daardie naamruimte toegewys aan PID 1. Hierdie proses word die "init" proses van die nuwe naamruimte en is verantwoordelik vir die bestuur van ander prosesse binne die naamruimte. Elke volgende proses wat binne die naamruimte geskep word, sal 'n unieke PID binne daardie naamruimte hê, en hierdie PIDs sal onafhanklik wees van PIDs in ander naamruimtes.
Vanuit die perspektief van 'n proses binne 'n PID-naamruimte kan dit slegs ander prosesse in dieselfde naamruimte sien. Dit is nie bewus van prosesse in ander naamruimtes nie, en dit kan nie met hulle interaksie hê deur gebruik te maak van tradisionele prosesbestuurstelsels (bv. kill
, wait
, ens.). Dit bied 'n vlak van isolasie wat help voorkom dat prosesse mekaar versteur.
Hoe dit werk:
Wanneer 'n nuwe proses geskep word (bv. deur die
clone()
stelseloproep te gebruik), kan die proses toegewys word aan 'n nuwe of bestaande PID-naamruimte. As 'n nuwe naamruimte geskep word, word die proses die "init" proses van daardie naamruimte.Die kernel handhaaf 'n koppeling tussen die PIDs in die nuwe naamruimte en die ooreenstemmende PIDs in die ouer-naamruimte (dit wil sê die naamruimte waaruit die nuwe naamruimte geskep is). Hierdie koppeling stel die kernel in staat om PIDs te vertaal wanneer dit nodig is, soos wanneer seine tussen prosesse in verskillende naamruimtes gestuur word.
Prosesse binne 'n PID-naamruimte kan slegs ander prosesse in dieselfde naamruimte sien en daarmee interaksie hê. Hulle is nie bewus van prosesse in ander naamruimtes nie, en hul PIDs is uniek binne hul naamruimte.
Wanneer 'n PID-naamruimte vernietig word (bv. wanneer die "init" proses van die naamruimte afsluit), word alle prosesse binne daardie naamruimte beëindig. Dit verseker dat alle hulpbronne wat met die naamruimte verband hou, behoorlik skoongemaak word.
Laboratorium:
Skep verskillende Naamruimtes
CLI
Deur 'n nuwe instansie van die /proc
-lêersisteem te monteer as jy die parameter --mount-proc
gebruik, verseker jy dat die nuwe bergnamespace 'n akkurate en geïsoleerde siening van die prosesinligting spesifiek vir daardie namespace het.
Docker
Kyk watter namespace jou proses in is
Om te bepaal in watter namespace jou proses tans is, kan jy die volgende opdrag gebruik:
Hierdie opdrag sal die PID (Process ID) van die proses toon, tesame met die namespace waarin dit bestaan.
Vind alle PID-ruimtes
Let daarop dat die root-gebruiker van die aanvanklike (standaard) PID-naamruimte al die prosesse kan sien, selfs diegene in nuwe PID-naamruimtes. Dit is hoekom ons al die PID-naamruimtes kan sien.
Betree 'n PID-naamruimte
Wanneer jy binne 'n PID-namespace gaan vanaf die verstek-namespace, sal jy steeds al die prosesse kan sien. En die proses van daardie PID-ns sal die nuwe bash op die PID-ns kan sien.
Jy kan ook slegs binne 'n ander proses-PID-namespace gaan as jy root is. En jy kan nie binne 'n ander namespace ingaan sonder 'n beskrywer wat daarna verwys nie (soos /proc/self/ns/pid
)
Verwysings
Last updated