Gestionarea drepturilor de acces în freebsd - note bsdelnik; )

Drepturile de acces joacă un rol important în dezvoltarea conceptului de securitate OS. În FreeBSD, drepturile de acces sunt destul de simple, spre deosebire de sistemul de operare Windows, unde există o moștenire ascendentă și descendentă. Desigur, o astfel de flexibilitate în stabilirea drepturilor de acces la anumite resurse este un lucru pozitiv, însă un sistem prea complex de emitere a drepturilor poate duce la o eroare gravă, care la rândul său poate compromite întregul sistem.
În sistemul de operare FreeBSD, există doar trei steaguri standard (de asemenea, există steaguri speciale) care determină care dintre următoarele drepturi de acces:
r - lectură
w - înregistrare
x este punerea în aplicare a

Proprietarul este determinat direct de utilizatorul care deține o anumită resursă (fișier, dispozitiv, director), poate fie să filmeze, fie să instaleze diverse steaguri de acces.
Grupul va determina lista de utilizatori care au acces partajat la resursă.
Alții sunt acei utilizatori care nu se află în grup și, în consecință, nici unul dintre aceștia nu este proprietarul resursei. Alții sunt utilizatori nedoritori și de cele mai multe ori au un set minim de drepturi sau nu le au deloc.

După cum puteți vedea din exemplu, directorul a citit, scrie și executa permisiuni pentru proprietar (atrium), pentru grup (roată) drepturi de citire și executare, pentru toți ceilalți utilizatori nu există drepturi de acces.


Pentru a înțelege toate complicațiile drepturilor de acces, este important să înțelegeți ordinea verificării lor:

1. Inițial, se verifică dacă utilizatorul este proprietarul fișierului și, dacă este așa, drepturile acestuia sunt determinate și, în continuare, controlul drepturilor de acces nu merge, adică chiar dacă utilizatorul se află în grupul a cărui drepturi sunt mult mai mici decât proprietarul, drepturile grupului nu vor fi nici măcar pentru a fi verificate. Dacă utilizatorul este proprietarul resursei și nu sunt definite drepturi pentru aceasta, accesul este refuzat.

După cum puteți vedea, intrarea în fișier a avut succes.

2. Dacă utilizatorul nu este proprietarul fișierului, atunci este verificat dacă acesta nu este în grupul care are drepturi de acces la resursă, în caz afirmativ, sistemul determină drepturile de acces către utilizator care corespund drepturilor grupului. Dacă utilizatorul se află într-un grup și nu există drepturi pentru grup, accesul este refuzat.

3. În plus, în cazul în care utilizatorul nu este proprietarul fișierului și nu se află în grupul care are acces la fișier, atunci i se atribuie drepturile definite pentru ceilalți.

4.Obsobo drepturi de acces verificate pentru root user. Dacă sistemul vede că utilizatorul are UID = 0, care corespunde cu root, indiferent de login_name, atunci sistemul nu verifică deloc drepturile de acces la resursă, deoarece utilizatorul rădăcină are acces nerestricționat la sistem.


Tipuri de reprezentare a drepturilor de acces:

Drepturile de acces pot fi reprezentate atât în ​​formă digitală, cât și în caracter.

1. Versiunea digitală

(111 - 111 -111) - corespunde drepturilor de acces 777.

Pentru a converti un sistem binar la unul zecimal, se folosește următoarea tabelă de mapare, care se citește de la dreapta la stânga:

128 64 32 16 8 4 2 1


Cum putem traduce drepturile noastre de acces într-un sistem zecimal? Să practicăm.
Atribuiți următoarele permisiuni pentru fișierul named test.txt:

Acum traducem cifrele:

u (utilizator) - 111 - ne uităm la tabelul nostru de corespondență de la dreapta la stânga, pentru că această secvență corespunde cifrelor - 124, apoi vom rezuma cifrele obținute și vom obține - 1 + 2 + 4 = 7
g (grup) - 101 - face același lucru - 1 + 4 = 5
o (altul) - 100 - face același lucru - 4 = 4

Ca rezultat, permisiunile noastre de fișiere arată astfel: 754 și pot fi atribuite utilizând comanda chmod (1).

Pentru traducerea inversă, valoarea digitală în binar, este necesar să se împartă cu 2, restul atunci când se împarte corespunde unității, dacă diviziunea fără rest este 0, este scrisă de la dreapta la stânga.

De asemenea, pentru a facilita memorarea, vom compila un tabel corespunzător reprezentării digitale a drepturilor de acces:

1.Pentru proprietar - citiți, scrieți, executați
2.Pentru grupuri - citiți și scrieți
3.Pentru alții - lectură

Proprietar: 0400 + 0200 + 0100 = 0700
Grupa: 0040 + 0020 = 0060
Altele: 0004 = 0004

Ca rezultat, obținem permisiunea pentru fișierul - 764, aceste drepturi pot fi atribuite cu comanda chmod (1).

2. Varianta simbolică

sau puteți să o faceți diferit

Există o mulțime de moduri, așa cum se spune, totul depinde de imaginația ta, îmi place mai mult în versiunea digitală.

În plus față de drepturile de acces standard - citire, scriere, execuție, există drepturi de acces speciale, pot fi atribuite atât în ​​versiunea simbolică, cât și în cea digitală:

Important!
Drepturile la director prin acțiunea lor diferă de drepturile instalate în fișier:

1. Dreptul de a scrie în directorul grupului, al proprietarului sau al altora vă permite să ștergeți orice fișier din acesta, indiferent de proprietar și de drepturile de acces stabilite pe acesta, deci aveți grijă să aveți dreptul de a scrie în director. Pentru a rezolva această problemă, puteți folosi steagul special - Biciul Stick (1000), prezentat în Tabelul 1.5.

2. Dreptul de execuție instalat pe director permite utilizarea comenzii ls (1) cu opțiunea '-l', comanda cd (1) pentru aceasta, deoarece accesează metadatele fișierului.

3. Dreptul de citire pentru director vă permite să obțineți o listă de fișiere fără informații detaliate despre ele.

4. Drepturile de lectură și de execuție pentru director funcționează independent unul de celălalt, adică prezența ambelor drepturi de acces nu este necesară. O combinație a acestor drepturi de acces poate produce rezultate interesante:
Cu dreptul de a rula pe director, fără dreptul de a citi, vă permite să creați un așa-numit director "întunecat". Ce este? În acest director nu există posibilitatea de a obține o listă de fișiere în el, dar este posibilă accesarea fișierelor dacă numele lor sunt cunoscute în avans. De exemplu, creați un director întunecat și încercați să obțineți o listă de fișiere în el și să citiți unul dintre fișierele cu un nume cunoscut:

Drepturile de instalare instalate la această sau pe acea resursă pot fi modificate numai de către proprietar sau superuser cu UID = 0.


Atribuirea drepturilor de acces

Există o comandă foarte utilă umask (2), care stabilește o mască pentru fișierele nou create în sistem. Puteți găsi această comandă nu numai în sistemul FreeBSD, ci și în diferite programe (Samba ....). În software, acesta poate fi folosit pentru directoare, dar există o diferență în modul în care sunt calculate permisiunile pentru directoarele și fișierele pe care această comandă le definește. Formatul comenzii este foarte simplu, se dau trei cifre, care se scad unul de celalalt 7 in schimb, daca comanda determina permisiunile pentru directoare si din 6 daca comanda determina drepturile pentru fisiere. De exemplu, în sistemul FreeBSD specificați o mască de 240, acest lucru vă va permite să setați drepturi de acces la fișierele nou create 426, adică în reprezentarea simbolului r --- w-rw-:

Pentru a lucra cu drepturile de acces și a schimba proprietarii, grupurile vor fi utile următoarele comenzi:

chmod (1) - modificări ale drepturilor de acces la o anumită resursă.
chown (8) - schimba grupul și proprietarul resursei.
chgrp (1) - modificați grupul de resurse.
ls (1) - citirea catalogului și obținerea de informații detaliate diferite.
stat (1) - obținerea de informații statistice despre fișier, o comandă foarte utilă.
umask (2) - stabilește o mască pentru fișierele create pentru utilizator.

Creați un fișier și setați-l pentru proprietarul dreptului de a citi și de a scrie, pentru citirea în grup și pentru alții fără drepturi:

În versiunea digitală:


În versiunea simbolică:

$ touch test.file
$ chmod u = rw, g = r, o-rwx test.file
$ ls -l
total 0
-rw-r ----- 1 roată atrium 0 Jun 18 01:06 test.file

Schimbați proprietarul sau grupul pentru un fișier sau un director:


Să analizăm informațiile despre fișier sau director:

Articole similare