Un sistem GNU/ Linux este conceput având în minte siguranța, de aici sistemul de administrare a drepturilor pentru fiecare utilizator în parte (mai ales deoarece Linux este un sistem multiuser și multitask). De obicei lucrul ca user normal este suficient pentru uz curent.
Sunt situații când avem nevoie de permisiuni mai multe decât de obicei, pentru instalări/ dezinstalări, updateuri, modificări fișiere din afara directorului nostru /home/user. Putem căpăta permisiuni suplimentare temporar atât în linia de comandă cât și în interfața grafică.
CLI
În linia de comandă putem folosi două alternative,
su și
sudo.
Su (
switch user sau
substitute user, în unele documentații apare și
super user, incorect după părerea mea, su nu e legat obligatoriu de contul root...) este comanda cu ajutorul căreia putem schimba contul curent. Dată fără argumente va cere parola de root și va schimba contul curent din utilizatorul logat în cont de root. Dacă după su adăugăm un nume de alt utilizator normal ni se va cere parola acelui cont și vom fi logați în terminal ca acel utilizator.
Ceea ce ne interesează este logarea ca root pentru actualizări sau instalări sau modificarea fișierelor la care nu avem drepturi de scriere ca utilizator normal, deci vom da comanda
su,
su -,
su -c nume-comandă, sau
sux apoi tastăm la cerere parola de root. Citiți
man su pentru detalii, câteva explicații pe scurt:
su = căpătăm drepturi de root (devenim userul root), dar nu se modifică variabilele PATH și directorul curent;
su - (alternative:
su -l sau
su --login)= devenim userul root și-n plus se schimbă și variabilele PATH, iar directorul root devine directorul de lucru;
su -c comandă = devenim root doar pentru comanda pasată shell-ului, după rularea comenzii devenim iar userul inițial; deci căpătăm permisiuni sporite temporar, nu trebuie să ne delogăm după ce-am terminat de instalat, actualizat, modificat; dacă comanda are propriile opțiuni, parametri, trebuie încadrată între ghilimele (' sau ")
sux = este un wrapper pentru su, trebuie instalat separat, face același lucru ca su, dar în plus primim toate drepturile asupra serverului X.
Comanda
env |grep DISPLAY arată drepturile asupra X, vedeți că la su - nu avem așa ceva,
pwd ne arată directorul curent.
Sudo (
super user do) permite unui utilizator cu drepturi (drepturi de execuție stabilite în /etc/sudoers) executarea unei comenzi ca utilizator root sau alt user cu drept de sudo. După executarea comenzii rămânem logați cu contul de user normal. Într-un interval scurt de timp (implicit e 5 minute...) putem folosi iar comanda sudo fără să ni se ceară parola! După acel interval (timeout) vom fi iar nevoiți să dăm parola.
sudo comandă= va executa comanda cu permisiunile contului root, ca și cum ar fi dată de root;
sudo -s/
sudo -i/
sudo su= diverse metode de a ne loga ca userul root cu ajutorul parolei de utilizator, nu a celei de root; sudo -i schimbă și directorul curent în /root, celelalte două variante păstrează locația curentă; într-un fel echivalează cu folosirea su, astfel trebuie să părăsim contul de root la terminarea lucrului (instalări, dezinstalări, actualizări, lucrul cu fișiere asupra cărora utilizatorul nostru nu are permisiuni de execuție, etc); pentru a vedea diferențele dintre aceste 3 comenzi dați comanda
pwd;
sudo -u nume-user comandă= va executa comanda dată ca userul specificat după opțiunea
-u;
Pentru ca un utilizator să aibă drept de sudo trebuie trecut în fișierul de configurări al sudo,
/etc/sudoers. În același fișier putem modifica comportamentul sudo:
1- modificare timeout (timp în care nu ni se cere parola)= adăugăm la finalul fișierului o linie de genul la subsecțiunea ## Defaults specification:
Defaults:nume-utilizator timestamp_timeout=x (înlocuim x cu 10, 15, etc, pentru timeout de 10 sau 15 minute, iar pentru a se păstra comportamentul toată sesiunea o valoare mai mică de 0, de exemplu -1); dacă dorim să se ignore setarea revocăm cu
sudo -K,
sudo -k sau
sudo -v;
2- setăm sudo să ceară parola de root, nu cea a utilizatorului ce dă comanda:
Defaults rootpw;
3- setăm sudo să insulte utilizatorul ce greșește parola:
Defaults insults;
4- drept de folosire sudo de către un grup întreg (wheel): decomentăm (ștergem # din fața liniei roșii):
## Uncomment to allow members of group wheel to execute any command
# %wheel ALL=(ALL) ALL
5- folosire sudo fără parolă de către membrii grupului wheel prin decomentarea linii scrise cu roșu:
## Same thing without a password
#%wheel ALL=(ALL) NOPASSWD: ALL
Similar putem da drept de sudo doar unui anumit utilizator cu o linie de genul:
nume-utilizator ALL=(ALL) NOPASSWD: ALL
după cea cu:
root ALL=(ALL) ALL Mai sigur este setarea sudo pentru permiterea executării
DOAR a anumitor comenzi fără parolă:
nume-utilizator ALL=(ALL) NOPASSWD: comandă1, comandă1, comandă3, ..., comandăX
stressat ALL=(ALL) NOPASSWD: /usr/sbin/lshw, /usr/sbin/hddtemp
Surse: man su, man sudo, man sudoers
LE: puteți observa că folosesc ocazional sudo (prefer su în mod normal), dar întotdeauna sudo cu parolă de root (19 caractere acum, schimbată periodic/ minuscule+ majuscule+ cifre+ caractere non-alfanumerice/ adică @, $, #, !, etc)! Din motive de siguranță evident, chiar dacă mă-ndoiesc c-aș reprezenta o țintă, ideea e să nu ușurez munca ”crackerilor”!
Recunosc sincer că nu-mi pasă foarte mult dacă-mi crapă sistemul (dd rulz!, Clonezilla e ok), sau dacă-mi pierd date din /home (am salvate datele, muzica, etc. pe un hdd extern și parțial pe dvd-uri), dar parcă nu m-aș simți linuxist dacă m-aș lăsa în bătaia vântului (la mila script-kiddies!)... :D
GUI
O metodă simplă este să folosim front end-urile grafice pentru comanda su (
kdesu sau
gksu, în funcție de mediul grafic folosit, kdesu în KDE, gksu în Gnome, Xfce, etc), ori pentru sudo (
kdesudo,
gksudo). Să presupunem că dorim să deschidem o aplicație ca user root, managerul de fișiere Dolphin sau să edităm un fișier cu editorul de text kate.
Cu ajutorul Krunner (apăsăm Alt+F2 și va apărea căsuța krunner) sau terminalului tastăm
kdesu dolphin sau
kdesu kate /etc/sudoers, scriem parola de root în caseta de dialog apărută și aplicația dorită va porni ca și cum ar fi deschisă de userul root, astfel că avem toate permisiunile de execuție necesare!
O metodă mai ”radicală”,
nerecomandată este logarea în interfața grafică ca user root. Este inutilă și periculoasă, dar este posibilă!
În Kde se poate face prin modificarea fișierului de configurare al kdm, kdmrc (AllowRootLogin=true)
/usr/share/config/kdm/kdmrc în Arch, în alte distribuții poate fi altă cale, aflăm calea ca root cu comanda
find / -name kdmrc.
Altă metodă este folosirea systemsettings- Login Screen (Ecran de autentificare).