ghidul cuprinzător pentru a stăpâni fișierul Sudoers.
Ce este Sudoers de Fișiere?fișierul Sudoers este la fel ca orice alt fișier de pe sistemul de operare Linux., Dar joacă un rol vital în gestionarea a ceea ce poate face un „utilizator” sau „utilizatori dintr-un grup” în sistem.
De ce numele Sudoers?
Cuvântul Sudo este abrevierea termenului „Super User Do”. După cum sugerează în mod clar — este la fel ca și cum ai spune kernelului/sistemului de operare „nu ai de ales, fă-o!”. Deci, utilizatorii cu permisiunea Sudo sunt numiți utilizatori Sudo. Gestionarea tuturor acestor utilizatori sudo se face printr-un fișier numit ca fișier Sudoers. Acest fișier trăiește, de asemenea, în directorul / etc la fel ca orice alt fișier de configurare.,
de Ce Sudoers de Fișiere?
Un utilizator normal pe Linux va avea multe restricții în sistem. De exemplu-utilizatorul nu va putea să pornească un serviciu, să schimbe un fișier de configurare sau să execute un script în sistem în mod implicit. Din punct de vedere al securității, acest lucru arată perfect.,
dar, să luăm un exemplu de – tu ca un administrator de sistem trebuie să gestioneze toți utilizatorii și controalele lor. Aveți un site web găzduit pe Apache într-unul din serverele dvs. Aveți deja un Web-Admin pentru a gestiona. Un utilizator ar trebui să fie creat pentru el pe serverul Web. Acest utilizator ar trebui să aibă voie să facă două lucruri pe care un utilizator normal nu le poate :
- Start/Restart Apache Service în cazul în care se oprește.
- editați fișierul de configurare al Apache.
aveți două opțiuni de utilizator în mod implicit:
- Root User care are toate permisiunile pe sistem, inclusiv Apache.,
- un utilizator normal, care implicit nu va putea să pornească un serviciu sau să editeze niciun fișier de configurare din sistem.acest lucru este atunci când un fișier sudoers va veni la îndemână pentru tine. În fișierul Sudoers putem defini exact:
- Web-Admin utilizatorul poate porni doar serviciul Apache &
- el poate edita doar fișierul de configurare Apache.
redarea cu fișierul Sudoers
teorie suficientă, vom începe să facem lucrurile reale acum. Voi explica fiecare secțiune din fișierul Sudoers cu câteva exemple., În mod implicit un Sudoers fișier se pare ca asta —
în primul Rând, putem vedea cinci secțiuni în fișier — primele trei secțiuni în dosar sunt legate de numele de Host, User si Cmnd., Vom vorbi despre ALIAS mai târziu, în primul rând să ne vorbească despre secțiunea de bază :
#de drepturi de Utilizare caietul de sarcini
root ALL = (ALL:TOATE)
Notă: ‘#’ indică comentariu în fișier, sistemul de OPERARE va ignora această linie, în timp ce executa.,
Sintaxa : Utilizator <spațiu> OnHost = (Runas-Utilizator:Grup) <spațiu> Comenzi
Exemplu: root ALL = (ALL:TOATE) TOATE
Citeste-l ca Utilizatorul Root poate Rula Orice Comandă ca Orice Utilizator din Orice Grup pe Orice Host.
→ primul ALL este folosit pentru a defini gazde. Putem defini numele de gazdă / adresa Ip în loc de toate. Toate înseamnă orice gazdă.
→ al doilea ALL : al treilea ALL este User: Group., În loc de tot ce putem defini utilizator sau utilizator cu grupul ca Utilizator:Grup. Toate: toate înseamnă toți utilizatorii și toate grupurile.
→ ultimul tot este comanda. În loc de TOATE, putem defini o comandă sau un set de comenzi. Toate înseamnă toate comenzile.
Pentru a pune foarte simplu, este „cine unde = (as_whom) ce”.
notă: majoritatea oamenilor înțeleg gazdele ca gazde la distanță. Este numele de gazdă LOCAL / Adresa IP., GAZDELE teren va fi folosit foarte rar, dacă vrei să știi mai multe despre GAZDE în Sudoers vă rugăm să consultați → https://www.sudo.ws/man/1.7.10/sudoers.man.html
Practic putem permite unui utilizator de a face ceva doar în două moduri —
- Direct da-i permisiunea pentru a executa comanda prin modificarea permisiunea de fișier.
- permiteți-i să execute comanda ca un alt utilizator care are deja permisiunea de a executa această comandă.
în fișierul Sudoers vom implementa acesta din urmă.,
Vom folosi un alt exemplu pentru a înțelege în mod clar domeniile în sintaxa:
Exemplu : sysadmin TOATE = (rădăcină) /usr/bin/cat /etc/shadow
Citeste acest ca — User „sysadmin” poate Rula comanda „/usr/bin/cat /etc/shadow”, ca utilizator ROOT pe toate GAZDELE.
aici, în exemplul de mai sus, în secțiunea de comandă — am adăugat ceva mai mult decât o comandă, Acest lucru este de a arăta flexibilitatea de fișier Sudoers. Partea „/usr / bin / cat ” este un executabil binar sau o comandă utilizată pentru a vizualiza conținutul unui fișier., Partea „/etc / shadow „este un fișier confidențial care stochează parolele, deci înseamnă că utilizatorul” sysadmin „poate rula doar fișierul” /usr/bin/cat „on” /etc/shadow”, dacă acest utilizator încearcă să vizualizeze conținutul oricărui alt fișier pe care nu are permisiuni de citire, nu va putea.,
Sintaxa Sudo comanda: sudo <comanda>
Exemplu: sudo cat /etc/shadow
Acum, dacă utilizatorul „administrator de sistem” folosește sudo inainte de orice comanda, Sistemul de OPERARE va cere-i Parola de Utilizatori, verifică parola și apoi se duce la Sudoers fișier și verifică dacă îi este permis să emită această comandă ca orice tip de utilizator. Dacă el este permis — succes, altfel se va raporta înapoi unul dintre aceste două lucruri —
→ Utilizatorul nu este în fișierul Sudoers. Acest incident va fi raportat.,
Note : You can see this reported incident in /var/log/auth.log
→Sorry, user <username> is not allowed to execute <command> as <User> on <hostname>
Aici, utilizatorul webadmin este permis doar pentru a rula „cat /etc/shadow”. Dar a încercat să execute comanda ” cat „pe” /etc/gshadow”, ceea ce nu este permis.deoarece avem suficientă aderență pe câmpurile din sintaxa fișierului Sudoers, să mergem mai departe și să înțelegem alte secțiuni din fișier. Toate celelalte secțiuni vor depinde de secțiunea de bază despre care am discutat deja.,
următoarea secțiune este Secțiunea GRUP, care este
#Permite membrilor grupului sudo să execute orice comandă
%sudo ALL = (ALL:TOATE)
Percentila simbolul ‘%’ este folosit pentru a reprezenta un grup în Sudoers Fișier. Toate câmpurile și funcționalitățile lor din această secțiune sunt exact aceleași cu cele discutate în secțiunea anterioară — secțiunea utilizator. Putem atribui aceleași privilegii Sudo unui grup în locul unui utilizator specificând numele grupului – % <nume grup>., Deci Toți Membrii grupului vor moșteni aceleași privilegii acordate grupului.în mod implicit există un grup SUDO definit în fișierul Sudoers. Putem vedea că aceste permisiuni sunt exact aceleași cu permisiunile utilizatorilor ROOT din fișier. Deci, dacă un utilizator este membru al acestui grup SUDO, el poate executa toate comenzile pe care un utilizator ROOT le poate executa.să definim un grup personalizat și să înțelegem mai clar sintaxa. Să luăm același vechi exemplu de administrator de sistem pentru a face acest lucru. Să presupunem că nu. de angajați sunt mai mult acum, astfel încât administratorii de sistem sunt 3 acum., Fiecare dintre acestea are nevoie de aceleași permisiuni exacte pe care le-am dat primului administrator de sistem. Un lucru pe care îl putem face pentru a realiza acest lucru este să avem trei intrări pentru toți cei trei administratori de sistem din fișierul Sudoers. Dacă mergem cu această abordare, insultăm capacitățile unui fișier Sudoers.cel mai bun lucru de făcut este să grupați toți cei trei administratori de sistem într-un grup numit „SystemAdminGroup”., Vom defini permisiunile necesare pe acest grup cu —
%SystemAdminGroup TOATE = (rădăcină) /usr/bin/cat /etc/shadow
Acum, toate cele trei administratori pot executa Privilegiat de Comandă. Am făcut asta dintr-o dată folosind definiția grupului.fișierul Sudoers este capabil să eficientizeze întregul proces folosind diverse funcționalități. Primele trei secțiuni-pseudonime sunt utilizate pentru a realiza acest lucru., După cum sugerează deja cuvântul, folosim un ALIAS pentru ceva pe care îl putem folosi în întregul fișier, este la fel ca o variabilă globală într-un Script. Cum face acest lucru totul mai eficient? Putem defini set de comenzi, gazde și utilizatori într-o singură linie, atribuim această linie unui nume ALIAS, acest alias va fi folosit oricând și oriunde este necesar, fără a defini toate comenzile/gazdele/utilizatorii din nou.
vreau să includ încă un ALIAS care nu este listat în fișierul Sudoers în mod implicit, care este „Run_as ALIAS”., Acum avem patru PSEUDONIME —
- Utilizatorul ALIAS ca User_Alias
- Run-Ca ALIAS ca Runas_Alias
- ALIAS Gazdă ca Host_Alias
- Comanda ALIAS ca Cmnd_Alias
Notă : numele trebuie să fie definite în litere mari și poate să conțină numărul, alfabet și de subliniere (_). Numele Alias trebuie să înceapă cu alfabetul.,3e”>
ALIAS> = <numele de utilizator>,<numele de utilizator>, <numele de utilizator>…
Exemplu: User_Alias administratori de sistem = john,tim,tom
Utilizare: administratori de sistem TOATE = (rădăcină) /usr/bin/cat /etc/shadow
Dacă vreau un set de sudo permisiuni definite pentru utilizatori — john, tim și tom, nu trebuie să-l definească, de trei ori, în loc să mă pot defini un Alias și de a folosi acest Nume, în timp ce delegarea sudo acces la ele.,
Run As ALIAS Syntax —
Runas_Alias <ALIAS Name> =<username>,<username>,<username>…
Example: Runas_Alias MGRS = root,sradmin
Usage: systemadmin ALL = (MGRS) /usr/bin/cat /etc/shadow
If i want to define the set of users a user can run a command as, i can use Runas_Alias., Nu vă confundați aici, amintiți — vă doar mantra principală-cine unde = (as_whom) ce. Folosim un alias aici pentru a include nr. de utilizatori în câmpul „as_whom”.
Host ALIAS Sintaxa —
Utilizare: systemadmin GAZDELE = (rădăcină) /usr/bin/cat /etc/shadow
Dacă aveți nevoie pentru a defini un set de nume, adrese ip sau un interval de adrese ip pe care un utilizator este permis să emită Privilegiat/Sudo comenzi, nu pot realiza acest lucru folosind Alias Gazdă. Din nou, această parte aparține câmpului „unde” din fraza principală.
Cmnd_Alias <ALIAS Name> = <cmd1>,<cmd2>, <cmd3>…
Example: Cmnd_Alias SYSADMIN = /usr/sbin/apache2, /usr/bin/cat
Usage: systemadmin ALL = (root) SYSADMIN
If i need to permit a user to execute a set of commands as SUDO, i can define them under a Cmnd_Alias Section and use this ALIAS name while delegating the access., Această parte aparține câmpului „ce” din fraza principală.
NOPASSWD Modul:
Aceasta este una mai mult caracteristică specială în Sudoers care va permite unui Utilizator în Sudoers fișier să execute o privilegiat de comandă fără a introduce parola., Acest lucru este foarte util atunci când rulați scripturi automate în sistem ca utilizator normal, scriptul poate fi nevoit să execute o comandă privilegiată. Dar știm deja ce se întâmplă dacă orice utilizator folosește SUDO, va trebui să introducă parola!nu uitați că, chiar dacă este un script sau un proces, ar trebui să ruleze ca utilizator, nu poate rula singur.toate scripturile automate nu sunt suficient de inteligente pentru a introduce parola atunci când vi se solicită. Dar este posibil să introduceți automat parola. Pentru moment, să nu ne gândim la scripturi inteligente., Deci, pentru a încheia, o comandă privilegiată poate fi utilizată de un utilizator fără a introduce parola.
exemplu de script care are nevoie de NOPASSWD: supervizor în Linux.Vom discuta despre supraveghetor într-un alt articol.
Sintaxa : sysadmin TOATE = (rădăcină) NOPASSWD : /usr/sbin/apache2
Parametru de Excludere în PSEUDONIME
putem adăuga, de asemenea, parametrii care ar trebui să fie excluse în PSEUDONIME. De exemplu,
User_Alias EXCEPT_ROOT = TOATE, !,rădăcină
sysadmin TOATE = (EXCEPT_ROOT) /usr/sbin/apache2
Acest User_Alias poate fi folosit pentru a asigurați-vă că un UTILIZATOR poate executa comanda specificată ca „toți utilizatorii, cu excepția RĂDĂCINĂ”.
acest tip de excludere se poate face în toate pseudonimele, nu numai User_Alias. În orice ALIAS, sintaxa de excludere rămâne aceeași.
manipularea fișier Sudoers cu grijă
până acum trebuie să fi înțeles ce poate face un fișier Sudoers și cât de important este să se ocupe de fișier cu grijă. Linux implementează deja un mecanism pentru a vă asigura că fișierul Sudoers este manipulat corect.,este întotdeauna recomandat să nu editați fișierul /etc/sudoers direct. Există un instrument numit „visudo”. Acest lucru este folosit pentru a face în condiții de siguranță modificări la un fișier sudoers. Când editați fișierul sudoers folosind visudo, visudo are o funcționalitate încorporată pentru a verifica sintaxa înainte de a salva fișierul, dacă faceți o greșeală, va indica imediat linia unde sintaxa nu este corectă. Această funcționalitate a visudo va împiedica să provoace daune accidentale fișierului și sistemului.
concluzie:
fișierul Sudoers joacă întotdeauna un rol major în gestionarea controlului utilizatorului., Deși există multe modalități de a gestiona și controla ceea ce un utilizator poate și nu poate face în sistem, metoda Sudoers va fi întotdeauna eficientă și suficient de robustă pentru a gestiona și controla orice nu. de utilizatori. O altă metodă similară cu cea care merită menționată este SUID și SGID. Vom vorbi despre SUID și SGID într-un alt articol.