7. Permisiunile proceselor

Pentru următoarele minute, haideți să intrăm mai adânc în permisiunile proceselor. Vă mai amintiți de lecția în care v-am spus că în momentul în care rulați comanda passwd, iar aceasta are bit-ul de permisiune SUID activat, veți executa programul ca și root? Este adevărat, dar, totuși, din moment ce sunteți temporar root asta nu înseamnă că puteți modifica parola altuia. Asta în nici un caz!

Aceasta este din cauză mai multor UID-uri (ID-uri de utilizator) pe care Linux-ul le implementează. Există 3 UID-uri asociate fiecărui proces:

În momentul în care lansați un proces, acesta rulează cu aceleași permisiuni ca și utilizatorul sau grupul care îl rulează. Acesta este cunoscut sub numele de ID de utilizator efectiv. Acest UID este folosit pentru a permite drepturi de acces pentru un proces. Așa că normal, dacă Radu rulează comanda touch, procesul va rula ca și persoana utizatorului Radu, și orice fișier pe care l-a creat va fi sub proprietatea acestuia.

Mai există un alt UID, denumit ID de utilizator real. Acesta este ID-ul utilizatorului care a lansat procesul. Acest UID este folosit pentru a identifica cu exactitate cine este utilizatorul care a lansat procesul.

Un ultim UID ar fi ID-ul de utilizator salvat. Acesta permite unui proces să comute între UID efectiv și cel real și vice versa. Acest UID este util pentru că nu dorim ca procesul nostru să ruleze cu privilegii elevate tot timpul. Este doar o bună practică să folosiți privilegiile speciale doar în anumite momente.

Acum să punem cap la cap totul analizând comanda passwd încă o data.

În momentul în care rulăm comanda passwd, ID-ul efectiv este ID-ul de utilizator, să spunem că este 500 pentru moment. Dar ia stai un pic, vă amintiți că aplicația (comanda) passwd are permisiunea SUID activată. Așa că în momentul în care o rulați UID-ulS efectiv este acum 0 (0 este ID-ul de utilizator al root). Acum acest program poate accesa fișierele ca și root.

Acum hai să ne imaginăm că ați prins un pic gustul puterii și vreți să modificați parola lui Florin, Florin având UID-ul 600. Ei bine, nu prea ați avea sorți de izbândă pentru că, din fericire, procesul are și UID-ul real care in Acest caz este 500. Va ști ca UID-ul dvs. este 500 și prin urmare nu puteți modifica parola lui UID 600. (Desigur, asta nu mai contează dacă sunteți superutilizator al acelui calculator și puteți controla și schimba totul).

Din moment ce ați rulat passwd, va iniția procesul folosind UID-ul dvs. real și va salva UID-ul proprietarului acelui fișier (UID efectiv), pentru a putea comuta între cele două. Nu este nici o nevoie să modificați toate fișierele cu acces roit, dacă situația nu o cere.

În cele mai multe cazuri UID-ul real și cel efectiv sunt la fel, dar în cazuri particulare ca de exemplu comanda passwd aceste UID-uri se vor simba!


Exerciții

Deși nu am apucat să discutăm despre procese încă, totuși putem să ne uităm la cum toate aceste schimbări se întâmplă în timp real:

  1. Deschideți un terminal și rulați comanda: watch -n 1 “ps aux | grep passwd”. Aceasta comandă va monitoriza procesul passwd.
  2. Deschideți o fereastră cu un al doilea terminal și rulați comanda: passwd
  3. Observați fereastra primului terminal. Acolo veți vedea ca va apărea un proces pentru comanda passwd executată. Prima coloana din tabelul proceselor este ID-ul de utilizator efectiv, și iată este utilizatorul root.

Lasă un răspuns

Adresa ta de email nu va fi publicată.

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.