Acest tutorial detaliază listele de control al accesului pe Linux, la ce sunt folosite și cum să le gestionați.
În calitate de administrator de sistem, probabil că petreceți ceva timp configurând permisiuni pentru utilizatori și grupuri pe sistemul dumneavoastră.
Permisiunile pentru fișiere sunt deja destul de practice pentru a da permisiuni de citire, scriere sau execuție pentru directoare sau fișiere.
Dar ce se întâmplă dacă avem nevoie de o modalitate mai precisă de a acorda permisiuni pentru foldere sau fișiere?
Ce se întâmplă dacă vreau să dau acces la un fișier unui anumit utilizator sau unui anumit grup, care nu este proprietarul actual al fișierului?
Aceasta este exact ceea ce rezolvă listele de control al accesului, prescurtate și ACL, pe un sistem Linux.
În tutorialul de astăzi, ne uităm foarte atent la listele de control al accesului, ce sunt și cum sunt folosite pentru a configura corect un sistem Linux.
Ești gata?
Tabloul cuprinsului
- Ce veți învăța
- Noțiuni de bază despre listele de control al accesului în Linux
- Definirea listelor de control al accesului
- Listele de control al accesului
- Crearea listelor de control al accesului pe Linux
- Verificarea instalării pachetelor ACL
- Setarea listelor de control al accesului folosind setfacl
- Listarea listelor de control al accesului folosind getfacl
- Lucrul cu masca listelor de control al accesului
- Crearea listelor de control al accesului implicite pe directoare
- Ștergerea listelor de control al accesului implicite pe directoare
- Concluzie
Ce veți învăța
Dacă urmăriți acest tutorial până la sfârșit, veți învăța despre următoarele subiecte:
- Ce sunt listele de control al accesului și cum pot fi citite din comanda ls;
- Cum să setați permisiunile de bază pe un fișier folosind comanda setfacl:
- Cum se citesc listele de control al accesului cu ajutorul comenzii getfacl;
- Ce este masca listei de control al accesului și cum trebuie citită;
- Ce sunt valorile implicite ale listei de control al accesului și cum pot fi utilizate în mod eficient
Este un program destul de lung, așa că, fără alte introduceri, să începem cu o definiție rapidă a ceea ce sunt listele de control al accesului.
Noțiuni de bază despre listele de control al accesului în Linux
În Linux, există două moduri de a seta permisiuni pentru utilizatori și grupuri : cu permisiuni obișnuite pentru fișiere sau cu listele de control al accesului.
Definirea listelor de control al accesului
Listele de control al accesului sunt utilizate în sistemele de fișiere Linux pentru a seta permisiuni personalizate și mai personalizate pentru fișiere și foldere. Listele ACL permit proprietarilor de fișiere sau utilizatorilor privilegiați să acorde drepturi anumitor utilizatori sau unor grupuri specifice.
În Linux, după cum probabil știți, permisiunile sunt împărțite în trei categorii : una pentru proprietarul fișierului, una pentru grup și una pentru ceilalți.
Cu toate acestea, în unele cazuri, este posibil să doriți să acordați accesul la un director (permisiunea de execuție, de exemplu) unui anumit utilizator fără a fi nevoie să puneți acest utilizator în grupul fișierului.
Acesta este exact motivul pentru care au fost inventate listele de control al accesului.
Listele de control al accesului
În Linux, listele de control al accesului nu sunt activate atunci când creați un nou fișier sau director pe gazdă (cu excepția cazului în care un director părinte are anumite ACL-uri predefinite).
Pentru a vedea dacă listele de control al accesului sunt definite pentru un fișier sau un director, rulați comanda ls și căutați un caracter „+” la sfârșitul liniei de permisiune.
$ ls -l
Pentru a arăta diferența, iată care este diferența la listarea fișierelor pe o instanță minimă.
Acum că aveți câteva noțiuni de bază despre listele de control al accesului, haideți să vedem cum puteți începe să creați ACL de bază pentru fișierele și directoarele dumneavoastră.
Crearea listelor de control al accesului pe Linux
Înainte de a începe cu comenzile ACL, este important să aveți pachetele instalate pe gazda dumneavoastră.
Verificarea instalării pachetelor ACL
S-ar putea să nu fie cazul dacă ați ales să aveți un server minimalist în funcțiune.
Începeți prin a verifica ajutorul legat de setfacl prin rularea următoarei comenzi
$ setfacl --help
Dacă gazda dumneavoastră nu poate găsi comanda setfacl, asigurați-vă că ați instalat pachetele necesare pentru gestionarea ACL.
$ sudo apt-get install acl -y
Rețineți că veți avea nevoie de privilegii sudo pe Debian 10 pentru a rula această comandă.
Rulați comanda setfacl și asigurați-vă că de data aceasta puteți vedea comenzile de ajutor.
Acum că gazda dvs. este configurată corect, haideți să vedem cum funcționează comanda setfacl.
Setarea listelor de control al accesului folosind setfacl
Cu listele de control al accesului, există două comenzi principale pe care trebuie să le rețineți : setfacl și getfacl.
În acest capitol, vom arunca o privire asupra comenzii setfacl deoarece cea getfacl este destul de autoexplicativă.
Comanda setfacl este utilizată pe Linux pentru a crea, modifica și elimina listele de control al accesului pe un fișier sau director.
Comanda setfacl are următoarea sintaxă
$ setfacl {-m, -x} {u, g}:<name>: <file, directory>
Unde parantezele ondulate semnifică una dintre următoarele opțiuni, iar parantezele normale semnifică unul sau mai multe elemente.
- -m : înseamnă că doriți să modificați una sau mai multe intrări ACL pe fișier sau director.
- -x : înseamnă că doriți să eliminați una sau mai multe intrări ACL pe un fișier sau director.
- {u, g} : dacă doriți să modificați ACL pentru un utilizator sau pentru un grup.
- name : acesta este un parametru opțional, poate fi omis dacă doriți să setați intrările ACL pentru fiecare utilizator sau pentru fiecare grup de pe gazda dumneavoastră.
- : pentru a seta permisiunile de citire, scriere sau execuție asupra fișierului sau directorului.
De exemplu, pentru a seta permisiuni de scriere specifice pentru un utilizator pe un fișier, veți scrie următoarea comandă
$ setfacl -m u:user:w <file, directory>
Pentru a seta permisiuni de execuție pentru toți utilizatorii de pe gazda dumneavoastră, ați scrie următoarea comandă
$ setfacl -m u::x <file, directory>
Pentru a seta permisiuni complete pentru un anumit grup de pe gazda dumneavoastră, ați scrie setfacl în felul următor
$ setfacl -m g:group:rwx <file, directory>
Acum să spunem că doriți să eliminați o intrare ACL dintr-un fișier.
Pentru a elimina o intrare specifică unui utilizator dintr-un fișier, ați specifica opțiunea x.
Nota : nu puteți specifica drepturi dintr-o singură intrare ACL, ceea ce înseamnă că nu puteți elimina permisiunile de scriere, păstrând active permisiunile de citire ACL.
$ setfacl -x u:<user> <file, directory>
În mod similar, pentru a elimina ACL legate de grupuri pe gazda dumneavoastră, veți scrie următoarea comandă
$ setfacl -x g:<group> <file, directory>
Acum că ați văzut cum puteți crea cu ușurință liste de control al accesului pe Linux, este timpul să vedeți cum puteți verifica listele de control al accesului existente pe fișiere și directoare.
Listarea listelor de control al accesului folosind getfacl
Comanda getfacl este utilizată pe Linux pentru a imprima o listă completă a tuturor permisiunilor obișnuite și a permisiunilor listelor de control al accesului pe un fișier sau director.
Comanda getfacl poate fi utilizată cu următoarea sintaxă
$ getfacl <file, directory>
Comanda getfacl este împărțită în mai multe categorii :
- Nume fișier, proprietar și grup : informațiile despre proprietatea utilizatorului și a grupului sunt afișate în partea de sus;
- Permisiuni utilizator : în primul rând, veți găsi permisiunile utilizatorului obișnuit, numit și utilizator proprietar, urmat de orice intrări ACL specifice utilizatorului (numite utilizatori numiți)
- Permisiuni grup : sunt prezentate grupurile proprietare, urmate de intrările ACL specifice grupului, numite și grupuri numite
- Mască : care restricționează permisiunile acordate intrărilor ACL, masca va fi detaliată în secțiunea următoare;
- Alte permisiuni : aceste permisiuni sunt întotdeauna active și aceasta este ultima categorie explorată atunci când nicio altă permisiune nu se potrivește cu utilizatorul sau grupul curent.
Lucrul cu masca listelor de control al accesului
După cum probabil ați văzut din ultima captură de ecran, există o intrare de mască între grupurile numite și celelalte permisiuni.
Dar la ce este folosită această mască?
Masca ACL este diferită de masca de creare a fișierelor (umask) și este utilizată pentru a restricționa intrările ACL existente existente pe un fișier sau director.
Masca ACL este utilizată ca set maxim de permisiuni ACL, indiferent de permisiunile existente care depășesc masca ACL.
Ca întotdeauna, o diagramă vorbește cât o sută de cuvinte.
Masca ACL este actualizată de fiecare dată când executați o comandă setfacl, cu excepția cazului în care specificați că nu doriți să actualizați masca cu ajutorul indicatorului -n.
Pentru a împiedica actualizarea măștii, rulați setfacl cu următoarea comandă
$ setfacl -n -m u:antoine:rwx <file, directory>
După cum puteți vedea în acest exemplu, am setat utilizatorul „antoine” să aibă permisiuni complete asupra fișierului.
Masca este setată pentru a restricționa permisiunile la cele de citire și scriere.
În consecință, „permisiunile efective” setate pe acest fișier pentru acest utilizator sunt cele de citire și scriere, permisiunea de execuție nu este acordată.
Nota : dacă setul maxim de permisiuni diferă de intrarea de mască, vi se va prezenta o linie efectivă care calculează setul „real” de intrări ACL utilizate.
Crearea listelor de control al accesului implicite pe directoare
După cum s-a menționat deja în acest articol, este posibil să se creeze intrări ACL pe directoare și acestea funcționează în același mod în care funcționează listele de control al accesului la fișiere.
Cu toate acestea, există o mică diferență când vine vorba de directoare : aveți opțiunea de a crea liste de control al accesului implicite.
Listele de control al accesului implicite sunt folosite pentru a crea intrări ACL pe un director care vor fi moștenite de obiectele din acest director, cum ar fi fișiere sau subdirectoare.
Când creați intrări ACL implicite :
- Filele create în acest director moștenesc intrările ACL specificate în directorul părinte
- Subdirectoarele create în acest director moștenesc intrările ACL, precum și intrările ACL implicite din directorul părinte.
Pentru a crea intrări ACL implicite, specificați opțiunea -d atunci când setați ACL cu ajutorul comenzii setfacl.
$ setfacl -d -m {u, g}:<name>: <directory>
De exemplu, pentru a atribui permisiuni de citire tuturor fișierelor create într-un director, veți rula următoarea comandă
$ setfacl -d -m u::r directory
Acum, când se creează un fișier în acest director acl, puteți vedea că intrările ACL implicite sunt aplicate fișierului.
În mod similar, atunci când un director este creat în acl-directory, acesta va moșteni intrările ACL implicite specificate în directorul părinte.
Rețineți că este recomandat să specificați permisiuni implicite pentru toate cele trei categorii (utilizator, grup și altele).
De fapt, specificarea uneia dintre cele trei intrări le va crea pe celelalte două cu permisiuni legate de masca de creare a fișierelor.
Ștergerea listelor de control al accesului implicite pe directoare
Pentru a șterge listele de control al accesului implicite existente pe directoare, utilizați indicatorul -k cu comanda setfacl.
$ setfacl -k <directory>
După exemplul pe care l-am specificat mai devreme, iată cum se șterg intrările implicite
$ setfacl -k acl-directory
Rețineți că ștergerea intrărilor ACL din directorul părinte nu șterge intrările ACL din fișierele sau directoarele conținute în directorul părinte.
Pentru a elimina intrările ACL implicite dintr-un director și din toate subdirectoarele, va trebui să utilizați o opțiune recursivă (-R)
$ setfacl -kR <directory>
Concluzie
În acest tutorial, ați învățat despre listele de control al accesului pe Linux, comanda getfacl și setfacl.
Ați învățat mai multe despre masca listelor de control al accesului și despre modul în care sunt folosite ACL-urile implicite pentru a crea intrări ACL pe fișiere și subdirectoare conținute în directorul părinte.
Dacă sunteți curioși în legătură cu administrarea sistemului Linux, avem multe alte tutoriale pe această temă, asigurați-vă că le citiți!
.