- Root nudi potpunu kontrolu, ali Ubuntu i druge distribucije ga podrazumevano onemogućavaju kako bi smanjile rizike.
- Sudo vam omogućava da povećate privilegije od slučaja do slučaja i vodi evidenciju o tome ko izvršava svaku komandu.
- Za grafičke aplikacije postoje pomoćni programi kao što su kdesu, gksu, gksudo ili pkexec, koji se mogu koristiti u .desktop pokretačima.
- Sigurnost zavisi od korištenja minimalnih privilegija, izbjegavanja nepouzdanih skripti i revizije povišenih pristupa.

U Windowsu, mnogi ljudi su navikli pritiskati Shift+Enter ili Shift+klik lijevom tipkom miša da bi otvorili program s povećanim privilegijama iz Start menija. U Linuxu to nije uvijek jednostavno, jer se sigurnost oslanja na root, sudo i grafičke pomoćne komande , a svako desktop okruženje ima svoje alate. Uprkos tome, postoje prilično jednostavni načini za pokretanje aplikacija kao root iz pokretača, prečice ili menija aplikacija, iako je važno razumjeti šta to podrazumijeva.
Ključno je to što root korisnik ima apsolutnu kontrolu nad sistemom , a moderne distribucije, posebno Ubuntu i njegovi derivati, obično onemogućavaju direktno prijavljivanje. Stoga nije uobičajeno prijavljivati se kao root, već povremeno povećavati privilegije koristeći `sudo` ili grafički program koji traži lozinku. Ako želimo da ikona pokretača pokreće aplikaciju s tim privilegijama, morat ćemo modificirati naredbu koju izvršava ili kreirati poseban pokretač.
Šta zapravo znači pokrenuti nešto kao root?

U Linuxu, root je račun sa UID-om 0 i neograničenim privilegijama . Može čitati, mijenjati ili brisati bilo koju datoteku, instalirati softver, mijenjati konfiguracije kernela i kontrolirati procese koji pripadaju bilo kojem korisniku. To ga čini nevjerovatno moćnim alatom, ali i ogromnim rizikom ako se koristi nepažljivo. Jednostavna tipografska greška sa `rm` ili `mv` može učiniti sistem neupotrebljivim, a zlonamjerni skript izvršen kao root može instalirati backdoor, mijenjati sigurnosne mjere ili krasti podatke praktično bez traga.
U Ubuntuu, root račun nema zadanu lozinku i direktno prijavljivanje nije dozvoljeno. Filozofija je da radite sa svojim redovnim korisničkim računom i koristite `sudo` za određene zadatke . `sudo` u suštini znači pokretanje naredbe kao drugi korisnik, obično root, nakon autentifikacije sa vlastitom lozinkom ako pripadate `sudo` grupi. Ovo ograničava količinu vremena tokom koje ste izloženi i vodi evidenciju o tome ko je šta uradio.
Međutim, u vrlo specifičnim situacijama, kao što je oporavak oštećenog sistema, rad u ograničenim okruženjima ili konfigurisanje servisa koji zahtijevaju stalni pristup, možete razmotriti privremeno omogućavanje root pristupa. Opšta preporuka je da ga ponovo onemogućite čim se ukaže potreba. Što manje vremena provedete kao root, to je bolje za stabilnost i sigurnost računara.
Rizici korištenja roota bez opreza
Jedna od najočiglednijih opasnosti je slučajno brisanje vitalnih datoteka . Kao root, ne postoje ograničenja dozvola; komanda poput `sudo rm -rf /` može izbrisati sistem bez upozorenja. Obično ne postoji ni korpa za otpatke za ova brisanja, tako da oporavak može zahtijevati složene forenzičke alate ili čak potpunu ponovnu instalaciju sistema.
Još jedan rizik je pokretanje nepouzdanih skripti. Ako pokrenete kod preuzet s bilo koje stranice s povećanim privilegijama, u suštini mu dajete ključeve svoje kuće . Čak i ako se skripta čini bezopasnom, može sadržavati destruktivne instrukcije ili instalirati zlonamjerni softver s root privilegijama. Stoga je preporučljivo pregledati kod, koristiti službene izvore, provjeriti kontrolne sume i testirati ga u virtualnoj mašini ili kontejneru prije pokretanja u produkciji.
Također postoji problem sa sljedivošću. Kada koristite `sudo`, sistem zapisuje naredbu, korisnika koji ju je izdao i vrijeme do `/var/log/auth.log`, `/var/log/secure` ili `journalctl` . Ako se direktno prijavite kao root, sve se pojavljuje kao root i gubite mogućnost da znate koja je osoba napravila svaku promjenu. U okruženjima sa više administratora ili ISO 27001, PCI DSS ili drugim standardima revizije, ovaj nedostatak sljedivosti je značajna slabost.
Načini za dobijanje privilegija iz terminala

Najčešći i preporučeni način je da se prije određene naredbe navede `sudo`. Na primjer, za ažuriranje paketa, ponovno pokretanje servisa ili uređivanje zaštićene datoteke, `sudo` će tražiti vašu korisničku lozinku, a ne root lozinku, i nakon što vas autentifikuje, izvršit će naredbu s povišenim privilegijama. Ako je trebate pokrenuti kao drugi korisnik, možete koristiti `sudo -u username command` . A ako shvatite da ste zaboravili koristiti `sudo`, možete ponoviti posljednju naredbu sa `sudo!! `.
Kada ćete obavljati nekoliko administrativnih zadataka zaredom, može biti zgodno otvoriti privremeni root shell. `sudo -i` simulira potpunu root prijavu, učitava root okruženje i smješta vas u početni direktorij. `sudo su` ili `sudo su -` također rade, iako je `sudo -i` obično pouzdaniji. Da biste izašli iz ove sesije, jednostavno upišite `exit`. Nije preporučljivo ostavljati root shell otvoren bez nadzora.
S druge strane, naredba `su` mijenja korisnike. `su - root` ili jednostavno `su -` također usvaja varijable okruženja ciljnog korisnika, dok `su root` ili `su` bez crtice zadržava dio prethodnog okruženja. Ova razlika objašnjava greške poput `naredba nije pronađena`: administrativne naredbe se obično nalaze u `/usr/local/sbin`, `/usr/sbin` i `/sbin`, putanjama koje se ne pojavljuju uvijek u PATH-u običnog korisnika. Ako koristite `su` bez crtice, morat ćete upisati punu putanju ili prebaciti na `su -` da biste naslijedili korijenski PATH.
Ako želite omogućiti lozinku za root-a, to možete učiniti pomoću naredbe `sudo passwd root` . Ubuntu ovo ne preporučuje, ali tehnički dozvoljava root-u da ima lozinku. Da biste zaključali račun, koristite `sudo passwd -l root` , a da biste ga otključali, koristite `sudo passwd -u root`. U SSH-u, direktni root pristup kontrolira se pomoću `PermitRootLogin` u `/etc/ssh/sshd_config`. Najsigurnije je postaviti na `no` ili, najviše, `prohibit-password` da biste dozvolili samo SSH lozinke. Nakon toga, morate ponovo pokrenuti SSH servis.
Precizno konfigurirajte džempere
Datoteka `/etc/sudoers` definira ko može koristiti `sudo` i u koju svrhu. Najbolje je ne uređivati je ručno; ispravan pristup je korištenje `sudo visudo` , koje zaključava datoteku i provjerava sintaksu prije spremanja. Osnovno pravilo ima oblik `host user=(target_user)`. Na primjer, `bob ALL=(ALL) ALL` omogućava `bobu` da izvrši bilo koju naredbu kao root na bilo kojoj mašini. Mogu se koristiti i grupe, kao što je `%admin ALL=(ALL) ALL`.
Za dodjelu preciznijih dozvola koriste se aliasi. `User_Alias ADMINS = alice, bob` grupira korisnike, a `Cmnd_Alias LOCATE = /usr/sbin/updateddb` grupira naredbe. Zatim se koristi `ADMINS ALL = LOCATE` tako da ti korisnici mogu izvršavati samo te naredbe. Aliasi poput `NETWORKING` mogu se kreirati za naredbe kao što su `route`, `ifconfig`, `ping`, `iptables` itd. Ovo primjenjuje princip najmanjih privilegija bez davanja punog root pristupa bilo kome.
Opcija NOPASSWD vam omogućava pokretanje određenih naredbi bez lozinke, na primjer, `pi ALL=(ALL)`. NOPASSWD: ALL. Ovo je zgodno, ali opasno ako se zloupotrebljava. Nadalje, svaka upotreba `sudo` se evidentira, što pomaže u reviziji pristupa i rješavanju problema. Ako nešto pođe po zlu, pregled ovih logova može ukazati na to koja je nedavna promjena uzrokovala grešku.
Pokretanje grafičkih aplikacija kao root iz launchera

Za programe s grafičkim sučeljem, jednostavno korištenje naredbe `sudo` obično ne funkcionira dobro jer nema terminala koji bi tražio lozinku. Tu dolaze do izražaja grafički pomagači . U KDE-u postoji `kdesu` : ako znate koja naredba pokreće aplikaciju, možete pokrenuti `kdesu that_command`. Opcija `Run Command` u KDE meniju također vam omogućava pokretanje aplikacije kao drugi korisnik unosom njihovih vjerodajnica. U GNOME i GTK okruženjima , `gksu` i `gksudo` su bili široko korišteni ; to su prednji dijelovi za `sudo` ili `su`. Na primjer, `gksu synaptic` ili `gksudo gparted` otvaraju aplikaciju i traže lozinku.
U modernim sistemima, gksu se ili ne preporučuje ili se ne preporučuje. Njegova uobičajena alternativa je pkexec , zasnovan na PolicyKitu, koji omogućava programima pokretanje s privilegijama u skladu s definiranim pravilima. Mnogi trenutni programi za pokretanje koriste pkexec za administrativne zadatke. Ideja je ista: korisnik ne mora otvoriti terminal, već sistem provjerava autorizaciju na kontroliran način.
Da biste kreirali prečicu u pokretaču, uredite .desktop datoteku . Ključna linija je `Exec`. Ako želite da se pokreće kao root, možete koristiti nešto poput `Exec=gksu /putanja/do/programa`, `Exec=kdesu /putanja/do/programa` ili `Exec=pkexec /putanja/do/programa`. Ako direktno koristite `sudo`, trebat će vam da pokretač ima `Terminal=true` ili da konfigurirate grafički askpass. Također možete pokušati pritisnuti Alt+F2 i upisati pomoćnu komandu i naziv programa, na primjer, `gksu synaptic`. U KDE-u, `kdesu synaptic` ili opcija za pokretanje kao drugi korisnik obavlja sličnu funkciju.
Postoji klasična alternativa pod nazivom consolehelper , omotač za GUI aplikacije. Kreirate simboličku vezu, na primjer, /usr/bin/xterm-root koja pokazuje na /usr/sbin/consolehelper. Zatim konfigurirate PAM kreiranjem /etc/pam.d/xterm-root s uključivanjima auth, account i session iz config-util. Zatim definirate /etc/security/console.apps/xterm-root sa USER=root i PROGRAM=/usr/bin/xterm. Kada pokrenete xterm-root, consolehelper traži PAM autentifikaciju i pokreće xterm kao root. Ako naiđete na grešku "Xlib connection to :0.0 refused by server", pokretanje xhost local:root bi moglo pomoći.
U svakom slučaju, otvaranje grafičkih aplikacija kao root ima nedostatke: miješa varijable okruženja, može prekinuti sesijsku magistralu, utjecati na Wayland ili X11 i kreirati datoteke u vlasništvu root korisnika u vašem početnom direktoriju. Najbolje je koristiti ga samo za određene administrativne alate i zatvoriti ih čim završite. Nemojte pretraživati internet niti otvarati sumnjive dokumente kao root , jer bi svaki iskorištavajući pristup naslijedio pune privilegije.
Uobičajeni primjeri zadataka koji zahtijevaju root pristup
Mnoge svakodnevne operacije zahtijevaju povišene privilegije. Upravljanje paketima pomoću apt, zypper, dnf ili yum često zahtijeva sudo. Na primjer, `sudo apt update` , `sudo apt install firefox` ili `sudo zypper install docker-ce`. Isto važi i za sistemske servise: `sudo systemctl restart apache2`, `sudo systemctl restart ssh` ili `sudo systemctl restart nginx`. Za izmjenu korisničkih računa koristite `sudo usermod`, a za promjenu vlasništva nad datotekama koristite `sudo chown`. Uređivanje kritičnih konfiguracija, kao što je `/etc/ssh/sshd_config`, također zahtijeva root privilegije ako se vrši pomoću nano, vim ili gedit.
Ne trebate `sudo` za naredbe koje samo čitaju informacije ili ne mijenjaju sistem, kao što su `zypper repos` ili `systemctl status NetworkManager`. Korištenje `sudo` za sve iz navike je loša praksa. Razumno je povećavati privilegije samo kada zadatak to zahtijeva , a zatim se što prije vratiti na normalnog korisnika.
Najbolje prakse pri radu s povećanim privilegijama

Princip najmanjih privilegija trebao bi voditi sve. Koristite `sudo` za pojedinačne naredbe kad god je to moguće, izbjegavajte trajne root ljuske osim ako nije apsolutno neophodno i izađite čim završite. Nemojte pokretati skripte iz nepoznatih izvora kao root; prethodno pregledajte kod, preuzmite ga iz službenih repozitorija ili renomiranih projekata, provjerite kontrolne sume i testirajte u izoliranom okruženju ako imate bilo kakvih nedoumica. Zdrava doza skepticizma je vrlina kada se radi s kodom treće strane koji ima pune privilegije.
Također je preporučljivo konfigurirati sudoere granularno, ne oslanjajući se isključivo na sudo grupu za sve, te provoditi reviziju logova. Ako administrirate servere, provjerite `/var/log/auth.log`, `/var/log/secure` ili `journalctl -xe` kako biste otkrili zloupotrebu. U okruženjima s više korisnika, poznavanje ko je izvršio svaku naredbu ključno je za odgovornost i usklađenost sa sigurnosnim propisima.
Omogućavanje i onemogućavanje root-a pomoću glave
Ako odlučite omogućiti root pristup, dodijelite lozinku sa `sudo passwd root`, koristite je samo za neophodne zadatke, a zatim ponovo zaključajte račun. Da biste onemogućili direktnu SSH prijavu, uredite `sshd_config` i postavite `PermitRootLogin no` ili `prohibit-password`, a zatim ponovo pokrenite SSH. Da biste lokalno zaključali račun, koristite `sudo passwd -l root`. Da biste ga otključali, koristite `sudo passwd -u root`. Ove mjere smanjuju površinu napada i sprječavaju napade grubom silom protiv najmoćnijeg računa.
U većini slučajeva, praktičan odgovor na početno pitanje je da: program možete pokrenuti iz pokretača s root privilegijama koristeći grafički pomoćnik poput kdesu, gksu, gksudo ili pkexec, ili kreiranjem .desktop datoteke odgovarajućom naredbom. Međutim, ovo nije nešto što biste trebali ostaviti postavljeno za bilo koju aplikaciju. Bolje je imati posebne administratorske pokretače s jasnim nazivima i koristiti ih samo kada je to potrebno.
Ključna stvar je da root nije igračka, a sudo postoji upravo da vas osnaži, a da pritom svaki klik ne pretvori u trajni rizik. Ako trebate pokrenuti grafičku aplikaciju kao superkorisnik, dajte prioritet pomoćnim programima koji zahtijevaju lozinku, provjerite da li je aplikaciji zaista potrebna i ograničite njenu upotrebu na administrativne zadatke. Na taj način ćete uživati u praktičnosti pokretača bez žrtvovanja sigurnosti koja Linux čini tako jakim.