Drepturi de acces, drapele de fișiere și directoare în unix

Ca și în orice sistem multi-utilizator, pe sistemele de operare Unix există un mecanism pentru controlul accesului utilizatorilor la anumite resurse ale sistemului (timp CPU, memorie, fișiere, directoare etc.). Principalii participanți la acest mecanism sunt: ​​Utilizator, Grup, Alții, drepturile de bază de acces în Unix sunt:

  • drepturi de acces pentru citire;
  • scrieți drepturi de acces;
  • drepturi de acces pentru executare;

În consecință, în Unix, permisiunile și participanții sunt grupați între trei și trei, citiți / scriu / executați pentru utilizatori / grupuri / alții.

În plus față de drepturile de acces menționate mai sus, sistemele de operare Unix. acceptă "steaguri de fișiere". pentru a asigura un nivel suplimentar de protecție, control și gestionare a obiectelor sistemului. De exemplu, utilizând steaguri, puteți împiedica ștergerea unui fișier, chiar și de către utilizatorul rădăcină.

Fiecărui utilizator al sistemului li se alocă ID-uri, ID-ul utilizatorului (User ID) și ID-ul grupului (identificatorul grupului), pentru aceștia sistemul de operare determină proprietarul și grupul pentru un anumit obiect al sistemului. Numele simbolice sunt atribuite exclusiv cititorilor de către utilizatori.

Fiecare proces în sistemul de operare Unix, are nu două, ci patru identificator este UserID reală (UID) și UserID efectivă (UID) precum și ca fiind reală și efectivă grupului ID IDGrup (TIS).
ID-ul real al utilizatorului (Real GroupID) - numerele reale sunt folosite pentru a explica utilizarea resurselor de sistem.
ID-ul eficient al utilizatorului - noul identificator pe care procesul îl primește la momentul executării este utilizat pentru a determina drepturile de acces.

Procesele inițiate automat (de exemplu, când sistemul este pornit) primesc și ID-ul de utilizator. care este determinat de programul de lansare (cron, inetd, etc.), în cazuri normale, UserID este moștenit de la procesul părinte. Unele procese - "părinții" pot atribui, la procesul copilului, "descendentului", UserID. nu coincide cu a lui.

Uneori, un proces care rulează poate, în timpul execuției, să-și schimbe identificatorii. Acest lucru se întâmplă atunci când drepturile de acces la fișier sunt setate la biți suplimentari, SUID (Set ID utilizator - bit de modificare a identificării utilizatorilor) și SGID (Set group ID). Când un utilizator sau un proces pornește un fișier care are unul dintre acești biți instalat, procesul este temporar atribuit proprietarului fișierului (nu cel care îl execută). Astfel, un utilizator normal poate executa comenzi ca root.

După cum sa menționat mai sus, drepturile de acces la fișiere și directoare sunt determinate de Real UserID și Real GroupID. Dacă identificatorul nu se modifică în timpul executării programului, ID-ul real al utilizatorului (real GroupID) și ID-ul efectiv al utilizatorului (ID-ul efectiv al grupului) sunt aceleași.

Sistemul de furnizare a drepturilor de acces în sistemele de operare Unix are expresii numerice și simbolice. Numărul este următorul:

Există un alt bit cu o valoare octală de 1000. Așa-numitul Stiky-bit (Velcro). Dacă acest bit este setat la un director, fișierele conținute în acesta pot fi șterse și redenumite, numai dacă utilizatorul este, proprietarul directorului, proprietarul fișierului sau acesta este root-ul utilizatorului.

Expresii simbolice pentru setarea drepturilor de acces. Ca argumente pentru comanda chmod. În loc de valori octale, se utilizează echivalente de litere.

Pentru a vizualiza drepturile de acces și proprietarii la fișiere și directoare în modul de listare, puteți utiliza comanda ls cu pavilionul -l.

În această listă, puteți vedea că proprietarul tuturor fișierelor este utilizatorul rădăcină și grupul de roți. Primul caracter din stânga din coloana drepturilor de acces înseamnă tipul de obiect, obiectele pot fi de tipul:

În exemplul de mai sus: file.txt și file.sh sunt fișiere, test_dir este directorul.

Începând cu cel de-al doilea bit, înregistrarea este împărțită în 3 caractere, pentru utilizator, pentru grup, pentru altele, în cazul nostru:

  • Fișier file.txt. Este disponibil pentru citire și scriere de către utilizator, citit numai de către grup și pentru citirea de către alții;
  • fișier file.sh. Este disponibil pentru citire, scriere și execuție - de către utilizator, numai pentru citirea de către grup, pentru citirea de către alții;
  • test_dir. este un director și are următoarele drepturi de acces pentru utilizator: citiți, scrieți, executați; pentru grup: lectură, execuție; pentru alții: citire, executare;

Dacă bitul SUID este setat. apoi în secțiunea 2 (drepturi de acces pentru utilizator), în loc de valoarea "x". va sta "s". dacă bitul SGID este setat. așa va simula "s". dar deja în secțiunea 3 (permisiuni pentru grup), bine, dacă este instalat un bit Styky. în ultima poziție, secțiunea 4 (drepturi de acces pentru alții), va fi setat simbolul "t".

În cazul în care unul dintre acești biți a fost setat și bitul de execuție corespunzător nu a fost setat, vor fi setate simbolurile "S" pentru SUID și SGID și "T" pentru Stiky-bit. care indică o eroare și aceste atribute vor fi ignorate.

Merită menționat faptul că în sistemele de operare Unix drepturile de acces pentru fișiere și directoare sunt oarecum diferite.

  • r (Citire) - citire. Utilizatorul corespunzător (proces) are dreptul să citească conținutul acestui fișier și să copieze acest fișier.
  • w (Scrie) - introducere. Utilizatorul corespunzător (proces) are dreptul să editeze, să modifice, să șteargă conținutul fișierului, să adauge ceva (de exemplu, conținutul unui alt fișier). Cu toate acestea, acest lucru nu vă dă dreptul să ștergeți sau să redenumiți fișierul în sine, acest lucru fiind determinat de drepturile de acces la directorul în care este localizat fișierul.
  • x (eXecute) - execuție. Oferă dreptul, corespunzător utilizatorului (procesului), de a rula acest fișier, cu condiția ca acesta să fie un program sau un script executabil.

Este important să ne amintim că sistemul este să verifice pe deplin calea către un sub-director sau un fișier specific, existența drepturilor de acces la fiecare secțiune a drumului, și în cazul în care coca sau o parte din drum, nu setați bitul corespunzător al drepturilor de acces (x), utilizatorul va fi refuzat accesul. Pur și simplu, există o cale: / usr / home / vds-admin / public_html /. chiar dacă utilizatorul are drepturi suficiente pentru subdirectorul public_html. dar la directorul părinte, acasă. bitul x nu este setat, atunci când încercați să introduceți subdirectorul, acesta va fi interzis accesului.

Fișierele de fișier

În plus față de atributele de mai sus de gestionare a drepturilor de acces la obiecte din sistemele de operare Unix, există un alt instrument, mai degrabă un instrument mai puternic - un set de steaguri de fișiere.

Fișierele de fișiere funcționează la nivel global, afectând în egală măsură toți utilizatorii, inclusiv proprietarul fișierului și utilizatorul rădăcină. Este adevărat că proprietarul fișierului, ca și utilizatorul rădăcină, poate să elimine steagurile și să facă orice cu fișierul, dar depinde de cine și cine a fost instalat steagul și la ce nivel de securitate sistemul rulează în prezent.

  • Personalizat - fișierele care sunt disponibile pentru a schimba proprietarul fișierului și rădăcina utilizatorului.
  • Superuser - steaguri disponibile pentru modificare, numai pentru utilizatorul rădăcină.

Pe sistemele de operare Unix sunt utilizate următoarele pavilioane:

Steaguri super-utilizator

  • arch (arhivat) - fișier de arhivă (numai utilizator root)
  • sappnd (sappend) - acest fișier poate fi atașat, adică informațiile deja existente nu pot fi modificate. Dacă steagul este setat la un director, nu puteți șterge sau redenumi fișierele, dar puteți crea sau copia (numai utilizatorul root)
  • schg (schange, simmutable) - fișier neschimbat, nu puteți redenumi, modifica, șterge. Dacă acest steag este setat la un director, nu puteți adăuga sau șterge fișiere, dar puteți modifica conținutul celor existente (numai utilizatorul root)
  • sunlink (sunlink) - fișierul nu poate fi redenumit sau șters. Puteți modifica conținutul dacă aveți drepturile de acces corespunzătoare. (numai utilizator root)

Paragrafe personalizate

  • nodump - nu includeți acest fișier într-un dump. (proprietarul fișierului și utilizatorul root)
  • uappnd (uappend) - la fel ca pentru utilizatorul rădăcină, plus pentru proprietarul fișierului.
  • uchg (uchange, uimmutable) este același ca și pentru utilizatorul root, plus pentru proprietarul fișierului.
  • uunlnk (uunlink) - la fel ca și pentru utilizatorul root, plus pentru proprietarul fișierului.

De exemplu, pentru a seta flagul schg (neschimbat) în fișier. trebuie să executați următoarea comandă:

Pentru a vedea steagurile instalate, utilizați comanda ls cu opțiunile -lo.

În plus, puteți seta simultan mai multe drapele prin înscrierea acestora cu o virgulă:

Puteți elimina semnalul prin adăugarea la numele său, prefixul "nu":

Deci, este posibil să resetați toate steagurile, pentru aceasta, în loc de steag, pur și simplu puneți "0" (zero).

Comenzi de bază pentru instalarea și modificarea drepturilor de acces și lucrul cu steaguri pe sistemele de operare Unix

Principalele utilitare pentru lucrul cu drepturi de acces și drapele în sistemul de operare Unix sunt următoarele:

  • ls -l, ls -lo Listarea directorului, fără steaguri și cu steaguri
  • chown Schimbați proprietatea asupra unui obiect
  • chmod Instalați, ștergeți, modificați drepturile de acces la un obiect
  • chflags Instalați, ștergeți, modificați fișierele de fișiere