Faceți căutări pe acest blog

duminică, 10 martie 2013

Drepturi de root

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

12 comentarii:

  1. da-ne niste tutoriale cum iti protejezi sistemul - anume cum folosesti dd si CloneZilla :)

    RăspundețiȘtergere
  2. Nu prea am ce scrie pe tema asta, deja sunt explicate chestiile astea:
    dd
    Clonezilla
    Clonez / pe hdd extern (sau o partiție, sau stick usb), repun imaginea la nevoie...
    Nimic sofisticat.

    RăspundețiȘtergere
  3. Nuuuuuuuuuuuuuuuuu shogunelu taie repede faza cu sudo .... nu-ti ajunge citi si-au sifonat rootul cu sudo .....Te rog io mult tai-o din post, ajunge si prea mult man sudo
    please.

    RăspundețiȘtergere
  4. Sory șefule, deja-i târziu, au citit toți... E ok, acum vor seta toți sudo cu parolă de root, și aia țapănă, ce mai vrei? ;)

    RăspundețiȘtergere
  5. mai bine scriai despre inxi era mai util..., toti care -si futeaza sistemul cu sudo ii trimit la matale japonezu :D

    RăspundețiȘtergere
  6. Am vrut sefule, dar INXI e bazat pe Ubuntu 8.04, cam vechi, nu? Daca apare o versiune noua se schimba treaba!

    RăspundețiȘtergere
  7. hmmm iar comfuzi sula cu pfectura..... INX e una si INXI a doua ... moshule am pretentii la tine....:


    ┌─[ symbianflo @ symbianflo ] - [ Mandrivausers.ro ]
    └─[ MRB:aint-no-shit $]: inxi -F
    System: Host: symbianflo Kernel: 3.0.28-nrj-desktop-2rosa.lts x86_64 (64 bit)
    Desktop KDE 4.8.3 Distro: ROSALinux 2012.0 turtle
    Machine: Mobo: ASUSTeK model: M3N78 PRO version: 1.XX Bios: Phoenix version: ASUS M3N78 PRO 0403 date: 08/26/2008
    CPU: Quad core AMD Phenom 9950 (-MCP-) cache: 4048 KB flags: (lm nx sse sse2 sse3 sse4a svm)
    Clock Speeds: 1: 2599.815 MHz 2: 2599.815 MHz 3: 2599.815 MHz 4: 2599.815 MHz
    Graphics: Card: nVidia G96 [GeForce 9600 GT] X.Org: 1.10.3 drivers: v4l,nvidia Resolution: 1920x1080@60.0hz
    GLX Renderer: GeForce 9600 GT/PCIe/SSE2 GLX Version: 3.3.0 NVIDIA 295.40
    Audio: Card: Creative Labs SB Audigy driver: EMU10K1_Audigy Sound: ALSA ver: 1.0.24
    Network: Card: nVidia MCP77 Ethernet driver: forcedeth
    IF: eth0 state: up speed: 100 Mbps duplex: full mac: 00:23:54:16:7b:04
    Drives: HDD Total Size: 2250.5GB (41.0% used) 1: /dev/sda ST250DM000 250.1GB
    2: /dev/sdc WDC_WD10EARS 1000.2GB 3: /dev/sdb WDC_WD10EARS 1000.2GB
    Partition: ID: / size: 49G used: 13G (27%) fs: rootfs ID: / size: 49G used: 13G (27%) fs: ext4
    ID: /home size: 171G used: 3.9G (3%) fs: ext4
    Sensors: System Temperatures: cpu: 59.0C mobo: 31.0C gpu: 52C
    Fan Speeds (in rpm): cpu: 3169
    Info: Processes: 198 Uptime: 9:46 Memory: 1705.0/8003.4MB Client: Shell inxi: 1.7.24
    ┌─[ symbianflo @ symbianflo ] - [ Mandrivausers.ro ]
    └─[ MRB:aint-no-shit $]:


    of of ... pai asa te crescui io ma epigonule .....

    RăspundețiȘtergere
  8. Oooops! Scuze mosule, mai greseste omul cateodata, din fuga calului... :(

    RăspundețiȘtergere
  9. Shefuuuuuuu', tot te vad cam carcotas, sudo nu-ti mai place, gura nu-ti mai tace... ;)
    Io n-am zis nimic, ca n-am vrut sa rada blonzii da tine, ca esti gheek si dinozaur si-o arzi numai in CLI si n-ai nici macar X pe masina, da' gata, m-ai enervat. Ia zi public cine m-a-nvatat de sudo si de dd (ca parca vad ca urmeaza sa-mi dai ceva suturi si cu dd) si de alte alea "periculoase"? Huh?

    RăspundețiȘtergere
  10. da ma asa-i.... ai dreptate , avuma zii tu... nu mai bine imi dadeam cu ciocanu peste dej'te decit sa scriu alea alea...., da acuma ai pus degetul pe "I" dd si sudo tre sa fie folosit de catre cine stie ce face , poate daupa ce unul ajunge sa se decurce cit decit in TTY fara X as tinde sa cred ca e un utilizator mediu ( ca mine ,ca tine etc) deci tind sa cred ca e constient de periculozitatea comenzilor ( mai ales sudo combinat cu dd ), dar nici intr-un caz unu care iti cere un tutorial despre dd si intra in tty sa se joace cu sudo si dd.
    Shogunelu tu gindesti doar din punctul tau de vedere, crede-ma ca am ceva ani pe cocoasa de forumuri si de rezolvat belele provocate de virusuri_ptr_linux *
    Atita timp cit se invata si/sau testeaza pe o masina de sacrificiu respect, dar cind tarzanelu se crede batman si da cu astea in masina de lucru atunci e grav....
    Stii cite blonde am vazut ca au clonat imaginea ISO cu dd pe sdx-ul cu sistemul in uz? Si dupa aia
    cica hai ca-l recuperez, ...si asta dupa toate avertismentele si %cond-urile care sint in dd inainte de clonarea propriuzisa...
    Deci nu sint io circotas, ci realist, socoate ca unul care stie ca NU STIE si invata pe o masina sacrificabila e unu la 1000... si astia care-s curve batrine ( aka=tu ;) ca io-s tinerel)
    , nu cred ca au nevoie de tutoiale din astea, mai ramin 999 de tarzani-batmanizati care NU STIU da nici nu stiu ca NU STIU, macar io am ajuns la nivelul la care STIU CA NU STIU, ( si din cite te cunosc si tu , deci nu ma mai fa tu pa mine dinozaur si alea alea ca si tu esti de-al meu ... :D chit ca te tii pe arch sau mai stiu io pe ce cutting edge kkt pe batz.. )
    Iti urez citeva luni de bugfixing && helpdesk, dupa aia sa vezi cum vii tu la mine ,in genunchi ,plingind, cu 2 cisterne ( una de datorie si una sa te iert :D ) cu bere ...


    *virusuri_ptr_linux = utilizatori incepatori care se crede tarzan

    RăspundețiȘtergere
  11. Șefule, nu-ndrăznesc să te contrazic! Și nici să nu-ți ascult sugestiile: INXI

    RăspundețiȘtergere

Back to top