- Root ofron kontroll të plotë, por Ubuntu dhe shpërndarjet e tjera e mbajnë të çaktivizuar si parazgjedhje për të zvogëluar rreziqet.
- Sudo ju lejon të rritni privilegjet rast pas rasti dhe mban një regjistër se kush e ekzekuton secilën komandë.
- Për aplikacionet grafike, ekzistojnë ndihmës si kdesu, gksu, gksudo ose pkexec, të cilët mund të përdoren në lëshuesit .desktop.
- Siguria varet nga përdorimi i privilegjeve më të pakta, shmangia e skripteve të pabesueshme dhe auditimi i aksesit të lartë.

Në Windows, shumë njerëz janë mësuar të shtypin Shift+Enter ose Shift+klikoni me të majtën për të hapur një program me privilegje të larta nga menyja Start. Në Linux, kjo nuk është gjithmonë e thjeshtë, sepse siguria mbështetet në root, sudo dhe ndihmës grafikë , dhe çdo mjedis desktopi ka mjetet e veta. Megjithatë, ka mënyra mjaft të thjeshta për të nisur aplikacione si root nga një nisës, një shkurtore ose menyja e aplikacioneve, megjithëse është e rëndësishme të kuptohet se çfarë përfshin kjo.
Çelësi është që përdoruesi root të ketë kontroll absolut të sistemit , dhe shpërndarjet moderne, veçanërisht Ubuntu dhe derivatet e tij, zakonisht e çaktivizojnë hyrjen direkte. Prandaj, nuk është e zakonshme të identifikohesh si root, por të rritësh privilegjet herë pas here duke përdorur `sudo` ose një program grafik që kërkon fjalëkalimin. Nëse duam një ikonë lëshuesi për të nisur një aplikacion me ato privilegje, do të duhet të modifikojmë komandën që ekzekuton ose të krijojmë një lëshues specifik.
Çfarë do të thotë në të vërtetë të ekzekutosh diçka si root?

Në Linux, root është llogaria me UID 0 dhe privilegje të pakufizuara . Mund të lexojë, modifikojë ose fshijë çdo skedar, të instalojë softuer, të ndryshojë konfigurimet e kernelit dhe të kontrollojë proceset që i përkasin çdo përdoruesi. Kjo e bën atë një mjet tepër të fuqishëm, por edhe një rrezik të madh nëse përdoret pa kujdes. Një gabim i thjeshtë shtypi me `rm` ose `mv` mund ta bëjë sistemin të papërdorshëm, dhe një skript keqdashës i ekzekutuar si root mund të instalojë dyer të pasme, të modifikojë masat e sigurisë ose të vjedhë të dhëna praktikisht pa asnjë gjurmë.
Në Ubuntu, llogaria root nuk ka fjalëkalim të paracaktuar dhe hyrja direkte nuk lejohet. Filozofia është që ju të punoni me llogarinë tuaj të rregullt të përdoruesit dhe të përdorni `sudo` për detyra specifike . `sudo` në thelb do të thotë të ekzekutoni një komandë si një përdorues tjetër, zakonisht root, pasi të keni autentifikuar me fjalëkalimin tuaj nëse i përkisni grupit `sudo`. Kjo kufizon sasinë e kohës që jeni të ekspozuar dhe mban një regjistër se kush bëri çfarë.
Megjithatë, në situata shumë specifike, siç është rikuperimi i një sistemi të dëmtuar, puna në mjedise të kufizuara ose konfigurimi i shërbimeve që kërkojnë akses të vazhdueshëm, mund të merrni në konsideratë aktivizimin e përkohshëm të të drejtës së root-it. Rekomandimi i përgjithshëm është ta çaktivizoni përsëri sapo të lindë nevoja. Sa më pak kohë të kaloni si root, aq më mirë për stabilitetin dhe sigurinë e makinës.
Rreziqet e përdorimit të rrënjës pa kujdes
Një nga rreziqet më të dukshme është fshirja aksidentale e skedarëve të rëndësishëm . Si root, nuk ka kufizime lejesh; një komandë si `sudo rm -rf /` mund ta fshijë sistemin pa paralajmërim. Gjithashtu, zakonisht nuk ka kosh riciklimi për këto fshirje, kështu që rikuperimi mund të kërkojë mjete komplekse mjeko-ligjore ose edhe një riinstalim të plotë të sistemit.
Një rrezik tjetër është ekzekutimi i skripteve të pabesueshme. Nëse ekzekutoni kod të shkarkuar nga ndonjë faqe interneti me privilegje të larta, në thelb po i jepni çelësat e shtëpisë suaj . Edhe nëse skripti duket i padëmshëm, ai mund të përmbajë udhëzime shkatërruese ose të instalojë programe keqdashëse me privilegje rrënjë. Prandaj, këshillohet të rishikoni kodin, të përdorni burime zyrtare, të kontrolloni shumat e kontrollit dhe ta testoni atë në një makinë ose kontejner virtual përpara se ta ekzekutoni në prodhim.
Ekziston gjithashtu një problem me gjurmueshmërinë. Kur përdorni `sudo`, sistemi regjistron komandën, përdoruesin që e lëshoi atë dhe kohën e `/var/log/auth.log`, `/var/log/secure` ose `journalctl` . Nëse hyni direkt si root, gjithçka shfaqet si root dhe humbni aftësinë për të ditur se cili individ bëri secilin ndryshim. Në mjedise me administratorë të shumtë ose ISO 27001, PCI DSS ose standarde të tjera të auditimit, kjo mungesë gjurmueshmërie është një dobësi e rëndësishme.
Mënyrat për të marrë privilegje nga terminali

Mënyra më e zakonshme dhe e rekomanduar është t'i paraprini një komande specifike me `sudo`. Për shembull, për të përditësuar paketat, për të rinisur një shërbim ose për të modifikuar një skedar të mbrojtur, `sudo` do të kërkojë fjalëkalimin e përdoruesit tuaj, jo fjalëkalimin root, dhe pasi t'ju autentifikojë, do ta ekzekutojë komandën me privilegje të larta. Nëse duhet ta ekzekutoni atë si një përdorues tjetër, mund të përdorni `sudo -u komandën username` . Dhe nëse e kuptoni se keni harruar të përdorni `sudo`, mund ta përsërisni komandën e fundit me `sudo !! `.
Kur do të kryeni disa detyra administrative radhazi, mund të jetë e përshtatshme të hapni një shell rrënjë të përkohshme. `sudo -i` simulon një hyrje të plotë në rrënjë, ngarkon mjedisin rrënjë dhe ju vendos në direktorinë kryesore. `sudo su` ose `sudo su -` gjithashtu funksionojnë, megjithëse `sudo -i` është zakonisht më i besueshëm. Për të dalë nga kjo seancë, thjesht shkruani `exit`. Nuk këshillohet të lini një shell rrënjë të hapur pa mbikëqyrje.
Komanda `su`, nga ana tjetër, ndërron përdoruesit. `su - root` ose thjesht `su -` gjithashtu përvetëson variablat e mjedisit të përdoruesit të synuar, ndërsa `su root` ose `su` pa vizë lidhëse ruan një pjesë të mjedisit të mëparshëm. Ky ndryshim shpjegon gabime si `command not found`: komandat administrative zakonisht ndodhen në `/usr/local/sbin`, `/usr/sbin` dhe `/sbin`, shtigje që nuk shfaqen gjithmonë në SHTEGËN e një përdoruesi të rregullt. Nëse përdorni `su` pa vizë lidhëse, do t'ju duhet të shkruani shtegun e plotë ose të kaloni në `su -` për të trashëguar SHTEGËN rrënjë.
Nëse doni të aktivizoni një fjalëkalim për root, mund ta bëni këtë me `sudo passwd root` . Ubuntu nuk e dekurajon këtë, por teknikisht lejon që root të ketë një fjalëkalim. Për të bllokuar llogarinë, përdorni `sudo passwd -l root` , dhe për ta zhbllokuar atë, përdorni `sudo passwd -u root`. Në SSH, qasja direkte e root kontrollohet nga `PermitRootLogin` në `/etc/ssh/sshd_config`. Është më e sigurt ta mbani të vendosur në `no` ose, në rastin më të mirë, `prohibit-password` për të lejuar vetëm fjalëkalime SSH. Më pas, duhet të rinisni shërbimin SSH.
Konfiguroni pulovrat me saktësi
Skedari `/etc/sudoers` përcakton se kush mund ta përdorë `sudo`-n dhe për çfarë qëllimi. Është më mirë të mos e modifikoni manualisht; qasja e saktë është të përdorni `sudo visudo` , i cili e bllokon skedarin dhe kontrollon sintaksën para ruajtjes. Rregulli bazë merr formën `përdoruesi pritës=(përdoruesi_i_target)`. Për shembull, `bob ALL=(ALL) ALL` lejon `bob`-in të ekzekutojë çdo komandë si root në çdo makinë. Mund të përdoren edhe grupe, si p.sh. `%admin ALL=(ALL) ALL`.
Për të dhënë leje më të hollësishme, përdoren pseudonime. `User_Alias ADMINS = alice, bob` grupon përdoruesit dhe `Cmnd_Alias LOCATE = /usr/sbin/updatedb` grupon komandat. Pastaj, `ADMINS ALL = LOCATE` përdoret në mënyrë që këta përdorues të mund të ekzekutojnë vetëm ato komanda. Emra pseudonime si `NETWORKING` mund të krijohen për komanda të tilla si `route`, `ifconfig`, `ping`, `iptables`, etj. Kjo zbaton parimin e privilegjit më të vogël pa i dhënë askujt akses të plotë root.
Opsioni NOPASSWD ju lejon të ekzekutoni komanda të caktuara pa fjalëkalim, për shembull, `pi ALL=(ALL)`. NOPASSWD: ALL. Kjo është e përshtatshme, por e rrezikshme nëse abuzohet. Për më tepër, çdo përdorim i `sudo` regjistrohet, gjë që ndihmon në auditimin e aksesit dhe zgjidhjen e problemeve. Nëse diçka prishet, rishikimi i këtyre regjistrave mund të tregojë se cili ndryshim i fundit shkaktoi dështimin.
Nisja e aplikacioneve grafike si root nga nisësi

Për programet me një ndërfaqe grafike, përdorimi i thjeshtë i `sudo` zakonisht nuk funksionon mirë sepse nuk ka terminal për të kërkuar fjalëkalimin. Këtu hyjnë në lojë ndihmësit grafikë . Në KDE, ekziston `kdesu` : nëse e dini se cila komandë hap aplikacionin, mund të ekzekutoni `kdesu that_command`. Opsioni `Run Command` në menunë KDE ju lejon gjithashtu të hapni një aplikacion si një përdorues tjetër duke futur kredencialet e tyre. Në mjediset GNOME dhe GTK , `gksu` dhe `gksudo` përdoreshin gjerësisht ; këto janë frontend-e për `sudo` ose `su`. Për shembull, `gksu synaptic` ose `gksudo gparted` hap aplikacionin dhe kërkon fjalëkalimin.
Në sistemet moderne, gksu ose nuk rekomandohet ose nuk përdoret më. Alternativa e tij e zakonshme është pkexec , bazuar në PolicyKit, i cili lejon programet të ekzekutohen me privilegje sipas politikave të përcaktuara. Shumë lëshues aktualë përdorin pkexec për detyra administrative. Ideja është e njëjtë: përdoruesi nuk ka nevojë të hapë një terminal, por sistemi vërteton autorizimin në një mënyrë të kontrolluar.
Për të krijuar një shkurtore në nisës, duhet të modifikoni një skedar .desktop . Rreshti `Exec` është çelësi. Nëse dëshironi që të ekzekutohet si root, mund të përdorni diçka si `Exec=gksu /path/to/program`, `Exec=kdesu /path/to/program`, ose `Exec=pkexec /path/to/program`. Nëse përdorni `sudo` direkt, do t'ju duhet që nisësi të ketë `Terminal=true` ose të konfiguroni një askpass grafik. Gjithashtu mund të provoni të shtypni Alt+F2 dhe të shkruani ndihmësin dhe emrin e programit, për shembull, `gksu synaptic`. Në KDE, `kdesu synaptic` ose opsioni për t'u ekzekutuar si një përdorues tjetër kryen një funksion të ngjashëm.
Ekziston një alternativë klasike e quajtur consolehelper , një mbështjellës për aplikacionet GUI. Ju krijoni një lidhje simbolike, për shembull, /usr/bin/xterm-root që tregon te /usr/sbin/consolehelper. Pastaj konfiguroni PAM duke krijuar /etc/pam.d/xterm-root me përfshirjet e auth, account dhe session nga config-util. Më pas, ju përcaktoni /etc/security/console.apps/xterm-root me USER=root dhe PROGRAM=/usr/bin/xterm. Kur ekzekutoni xterm-root, consolehelper kërkon vërtetimin PAM dhe e nis xterm si root. Nëse hasni një gabim "Lidhja Xlib me :0.0 u refuzua nga serveri", ekzekutimi i xhost local:root mund të ndihmojë.
Sidoqoftë, hapja e aplikacioneve grafike si root ka disavantazhe: përzien variablat e mjedisit, mund të prishë autobusin e sesionit, të ndikojë në Wayland ose X11 dhe të krijojë skedarë në pronësi të root në direktorinë tuaj kryesore. Është më mirë ta përdorni vetëm për mjete specifike administrative dhe t'i mbyllni ato sapo të keni mbaruar. Mos shfletoni internetin ose mos hapni dokumente të dyshimta si root , sepse çdo shfrytëzim do të trashëgonte privilegje të plota.
Shembuj të zakonshëm të detyrave që kërkojnë qasje në rrënjë
Shumë operacione të përditshme kërkojnë privilegje të larta. Menaxhimi i paketave me apt, zypper, dnf ose yum shpesh kërkon sudo. Për shembull, `sudo apt update` , `sudo apt install firefox`, ose `sudo zypper install docker-ce`. E njëjta gjë vlen edhe për shërbimet e sistemit: `sudo systemctl restart apache2`, `sudo systemctl restart ssh`, ose `sudo systemctl restart nginx`. Për të modifikuar llogaritë e përdoruesve, përdorni `sudo usermod`, dhe për të ndryshuar pronësinë e skedarëve, përdorni `sudo chown`. Redaktimi i konfigurimeve kritike, të tilla si `/etc/ssh/sshd_config`, kërkon gjithashtu privilegje root nëse bëhet me nano, vim ose gedit.
Nuk keni nevojë për `sudo` për komandat që lexojnë vetëm informacion ose nuk modifikojnë sistemin, siç janë `zypper repos` ose `systemctl status NetworkManager`. Përdorimi i `sudo` për gjithçka nga zakoni është praktikë e keqe. Gjëja më e mençur për të bërë është të ngrini privilegjet vetëm kur detyra e kërkon këtë dhe pastaj të kaloni përsëri te përdoruesi normal sa më shpejt të jetë e mundur.
Praktikat më të mira kur punoni me privilegje të larta

Parimi i privilegjit më të vogël duhet të udhëheqë gjithçka. Përdorni `sudo` për komandat individuale sa herë që të jetë e mundur, shmangni shell-et rrënjësore të vazhdueshme përveç nëse është absolutisht e nevojshme dhe dilni sapo të keni mbaruar. Mos ekzekutoni skripte nga burime të panjohura si rrënjë; rishikoni kodin paraprakisht, shkarkojeni nga depot zyrtare ose projekte me reputacion të mirë, verifikoni shumat e kontrollit dhe testojeni në një mjedis të izoluar nëse keni ndonjë dyshim. Një dozë e shëndetshme skepticizmi është një virtyt kur merreni me kod të palëve të treta që ka privilegje të plota.
Gjithashtu këshillohet që sudoerët të konfigurohen në mënyrë të detajuar, duke mos u mbështetur vetëm te grupi sudo për gjithçka, dhe të mbahen të audituara regjistrat. Nëse administroni servera, kontrolloni `/var/log/auth.log`, `/var/log/secure` ose `journalctl -xe` për të zbuluar keqpërdorimin. Në mjedise me shumë përdorues, të dish se kush e ekzekutoi secilën komandë është thelbësore për llogaridhënien dhe pajtueshmërinë me rregulloret e sigurisë.
Aktivizoni dhe çaktivizoni rrënjën me një kokë
Nëse vendosni të aktivizoni aksesin root, caktoni një fjalëkalim me `sudo passwd root`, përdoreni vetëm për detyra thelbësore dhe më pas rikyçni llogarinë. Për të çaktivizuar hyrjen direkte në SSH, modifikoni `sshd_config` dhe vendosni `PermitRootLogin no` ose `prohibit-password`, pastaj rinisni SSH. Për të kyçur llogarinë lokalisht, përdorni `sudo passwd -l root`. Për ta zhbllokuar atë, përdorni `sudo passwd -u root`. Këto masa zvogëlojnë sipërfaqen e sulmit dhe parandalojnë sulmet me forcë brutale kundër llogarisë më të fuqishme.
Në shumicën e rasteve, përgjigjja praktike për pyetjen fillestare është po: mund të nisni një program nga nisësi me privilegje rrënjë duke përdorur një ndihmës grafik si kdesu, gksu, gksudo ose pkexec, ose duke krijuar një skedar .desktop me komandën përkatëse. Megjithatë, kjo nuk është diçka që duhet ta lini të konfiguruar për çdo aplikacion. Është më mirë të keni nisës specifikë administrativë me emra të qartë dhe t'i përdorni vetëm kur është e nevojshme.
Mësimi kryesor është se root nuk është një lodër dhe sudo ekziston pikërisht për t'ju fuqizuar pa e kthyer çdo klikim në një rrezik të përhershëm. Nëse keni nevojë të hapni një aplikacion grafik si superpërdorues, prioritizoni ndihmësit që kërkojnë një fjalëkalim, verifikoni nëse aplikacioni ka vërtet nevojë për të dhe kufizoni përdorimin e tij në detyra administrative. Në këtë mënyrë, ju shijoni komoditetin e hapësit pa sakrifikuar sigurinë që e bën Linux-in kaq të fortë.