ghidul cuprinzător pentru a stăpâni fișierul Sudoers.

Harsha Koushik

Follow

Apr 18, 2020 · 10 min de citit

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.,

Imagine-1. Sudoers fișier în / etc director. Sistem de operare : Linux Kali 2019.4

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:

  1. Root User care are toate permisiunile pe sistem, inclusiv Apache.,
  2. 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 —

    Imagine-2. Fișier Sudoers Needitat. Sistem de operare: Linux Kali 2019.4

    î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 —

    1. Direct da-i permisiunea pentru a executa comanda prin modificarea permisiunea de fișier.
    2. 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

    Image-3. Incident Report — Sudoers. Operating System: Kali Linux 2019.,4

    →Sorry, user <username> is not allowed to execute <command> as <User> on <hostname>

    Image-4. Cannot Execute Command in Sudoers. Operating System: Kali Linux 2019.,4

    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 —

    1. Utilizatorul ALIAS ca User_Alias
    2. Run-Ca ALIAS ca Runas_Alias
    3. ALIAS Gazdă ca Host_Alias
    4. 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.,

Image-5. User Alias in Sudoers File. Operating System: Kali Linux 2019.,figcaption>

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”.

Imagine-6. Alias Runas în fișier Sudoers. Sistem De Operare: Kali Linux 2019.,4

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ă.

Imagine-7. Alias gazdă în fișier Sudoers., Sistem De Operare: Kali Linux 2019.,iv id=”1ffdf0e914″>

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ă.

Imagine-8. Alias Cmnd în fișierul Sudoers. Sistem de operare: Linux Kali 2019.4

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.