Ako koristite Linux neko vrijeme, u jednom trenutku ste se morali susresti sa čarobnom riječi „sudo“. Ako ju i niste sami htjeli koristiti, vidjeli ste hrpu tutorijala gdje se sudo koristi i gdje bez te riječi ne možete riješiti problem. Prosječni promatrač i korisnik će reći da je to riječ koju koristite kada želite pristupiti „dodatnim“ akcijama koje nisu dostupne svakom korisniku, odnosno funkcijama na vašem računalu i biti će u pravu. Ali ipak – „sudo“ je mnogo više od toga.

 

Sve je krenulo od – Unixa

Zato ćemo se prvo malo vratiti u povijest da biste razumjeli od kuda ta riječ i da biste ju više cijenili. Da bismo to mogli napraviti, moramo se vratiti u vrijeme prije Linuxa, odnosno u vrijeme Unixa od kojeg je Linux i nastao (na neki način). Unix operativni sustav je izumljen u dane kada su računala bila velika kao hale ili ogromne sobe i postojali su većinom samo na fakultetima ili u poslovnim objektima koji su trebali računala. Daleko je to još bilo od vremena „osobnih računala“.

Pristup računalu se pružao preko tipkovnice i ekrana, odnosno terminala koji je bio spojen na računalo. Korisnik je napisao određene komande u terminal i poslao ih nazad prema računalu. Svaki korisnik je imao svoj account sa limitiranim ovlastima, kako se ne bi mogli miješati u tuđe podatke i račune, te da ne bi mogli dirati računalo kao takvo. Jedini tko je to mogao napraviti je administrator koji je imao „root account“.

Bez obzira na to, bilo je situacija kada je jedan korisnik htio dati pristup drugom korisniku. To se radilo sa naredbom „su“ (koja je kasnije zamijenjena sa „sudo“). SU je bila kratica za „substitute user“ (zamijeni korisnika) i dozvoljavala vam je da se logirate na tuđi korisnički račun, ali ste morali imati lozinku tog korisnika.

 

 

Kako je su(do) nekada radio …

Za primjer, uzmimo da Alice i Bob žive doba Unixa i imaju svoje korisničke računa na sveučilišnom računalu. Recimo i da Alice ima projekt koji mora raditi tjedan dana, no dva dana usred tjedna je neće biti u kampusu i neće imati pristup računalu, pa samim time neće moći izvršiti određene naredbe, a trebala bi. Ako Alice da svoju šifru Bobu, on može izvršiti naredbu „su Alice“ (op.a. ako uzmemo u obzir da je Alice koristila korisničko ime „Alice“), unijeti njenu šifru, spojiti se na njen account i odraditi posao umjesto nje:

[[email protected]]$ su alice Password: [[email protected]]$

Kada je Bob završio sa poslom, može samo unijeti riječ „exit“ u terminal i završiti svoju sesiju:

[[email protected]]$ exit [[email protected]]$

Također, „su“ komanda se mogla koristiti i za skok na root account, odnosno glavni administratorski account. Recimo da u kampusu još živi i Mark koji je glavni administrator, no on mora otići na par dana. Kako bi bio siguran da će sve biti u redu, dao je pristup svom prijatelju Johnu da on administrira sustav i vrati sve iz backupa ukoliko sustav padne. Mark je Johnu rekao lozinku i John može u terminal samo napisai „su“ i stisnuti enter:

[[email protected]]$ su Password: [[email protected]]#

Ako nakon „su“ nema argumenta, OS pretpostavlja da korisnik želi zamijeniti svog korisnika sa rootom pa odmah nudi mogućnost upisa lozinke za root account.
Ipak, ima nekoliko krucijalnih limitacija oko naredbe „su“. Prvi problem je što morate nekome dati glavnu lozinku ako želite da on koristi root account iz nekog razloga. To nije dobra ideja, bez obzira koliko vjerujete toj osobi.

Ako osoba, kojoj ste dali lozinku, ju negdje zapiše i izgubi, netko bi ju mogao naći, logirati se kao root i napraviti sa jednom naredbom katastrofu. Isto tako, sesija traje dok osoba ne upiše riječ „exit“. Ako zaboravite na to, nesvjesno i vi sami možete napraviti katastrofu na cijelom sustavu i nikako nije dobro biti konstantno logiran na root account.

 

 

 

“Sudo”

Tu dolazi „Sudo“. Primarna funkcija riječi sudo (što znači „substitute user do“) je ta da dozvoljava korisniku da izvrši jednu naredbu sa root accountom i da se odmah prebaci nazad na svog korisnika. To znači da samo stavite riječ sudo prije komande, upišete SVOJU lozinku i izvršite naredbu koju inače ne biste mogli sa svojim „običnim“ accountom. Ne morate imati glavnu lozinku od root accounta da biste nešto mogli napraviti.

[[email protected]]$ sudo command

Ipak, da biste to mogli, Administrator vašeg korisnika mora dodati u grupu  „sudoersa“, koja se često naziva i „wheel“. Kada vas doda, tada možete koristiti spomenutu riječ i izvršiti naredbe koje inače ne biste mogli. To su najčešće ljudi od povjerenja i nemaju svi korisnici te ovlasti. U velikim kompanijama to je par sistem administratora i to je to. Svi ostali korisnici su samo „obični“ korisnici.

Ako spomenuta Alice želi da Bob pristupi njezinom accountu, tražiti će administratora Marka da dozvoli da Bob može napraviti  sudo i na njenom accountu izvršiti određenu naredbu. Bob će to napraviti na slijedeći način:

[[email protected]]$ sudo -u alice command

Kada je Unix postao model za osobna računala, odnosno računala sa jednim korisnikom, komanda „sudo“ je postala izuzetno važna. Posebice na kasnijim OS-ovima kao što je Linux. Korisnik će veći dio dana koristiti „običan“ account koji nema root ovlasti, a kada treba samo će reći „sudo“ prije komande i izvršiti naredbu za koju mu trebaju posebne ovlasti. Čim se naredba izvrši, on se vraća na account koji nema posebne ovlasti.

Dobra praksa je koristiti sve naredbe BEZ riječi sudo, a operativni sustav će sam zahtjevati od vas da napišete sudo kada je to potrebno. Kada vas traži posebnu ovlast, prekontrolirajte naredbu da je sve dobro i onda izvršite istu sa posebnim ovlastima. Tako ćete spriječiti moguće destruktivno ponašanje.

Ovi primjeri bi vam trebali dati ideju što je sudo i zašto se koristi i zašto uopće postoji. Nadamo se da ju slijedeći put nećete olako koristiti nego da ćete razmisliti što ona znači i što vam može donijeti. Ako ništa drugo – nadamo se da ste naučili nešto novo danas.

 

Piše: B.P.

Komentiraj