Natrag na blog

Konfiguriranje Linux Sudoers datoteke

Konfiguriranje Linux Sudoers datoteke

Uvod

Pitate li se ikada zašto morate upisati “sudo” dok pokušavate izvršiti određene naredbe u Linux ili Unix okruženju operacijskog sustava? Sudo je zapravo skraćenica koja znači “super-user do”. Kada koristite naredbu sudo, možete pokretati programe i izvršavati naredbe sa sigurnosnim privilegijama drugog korisnika.

Prema zadanim postavkama, naredba sudo omogućuje korisnicima sustava izvršavanje naredbi s privilegijama superkorisnika. Nova instalacija Linux/Unix operacijskog sustava stvara root račun koji ima privilegije superkorisnika. Prilikom početnog postavljanja poslužitelja Linux/Unix sustava, administratori sustava se prijavljuju s root računom i dodjeljuju prava sustava drugim korisnicima sustava. Te se postavke pohranjuju u datoteci pod nazivom sudoers. Račun s root privilegijama može uređivati datoteku sudoers i mijenjati privilegije drugih korisnika.

U ovom vodiču raspravljat ćemo o tome kako možete dobiti root privilegije i unijeti izmjene u datoteku sudoers.

Preduvjeti

Ovo je praktični vodič i morat ćete testirati naredbe kako biste u potpunosti razumjeli vodič. U ovom vodiču koristit ćemo poslužitelj Ubuntu 20.04, međutim, možete pratiti korake ako imate bilo koju od modernih Linux distribucija kao što su Debian i CentOS. Možete pratiti ovu poveznicu kako biste postavili vlastiti Ubuntu poslužitelj u oblaku na CloudSigma.

Dobivanje root privilegija

Root privilegije možete dobiti na tri načina o kojima ćemo raspravljati u nastavku:

Prijava kao root

Najjednostavnija metoda koju većina ljudi koristi za dobivanje root privilegija je prijava u sustav pomoću vjerodajnica root korisnika. Ako pristupate svom lokalnom računalu, možete jednostavno unijeti korisničko ime i od vas će se tražiti lozinka.

Druga metoda koju možete koristiti za prijavu kao root je korištenje SSH-a – alata naredbenog retka za prijavu i obavljanje zadataka na poslužitelju. Zahtijeva korisničko ime i IP adresu vašeg poslužitelja. Sintaksa za prijavu kao root je sljedeća, zamijenite IP adresu vašeg poslužitelja:

Kada unesete gornju naredbu u svoj terminal, od vas će se tražiti da unesete lozinku ako niste postavili SSH ključeve, ili će se od vas tražiti da unesete pristupnu frazu za svoj SSH ključ ako ste ih postavili. Nakon što unesete ispravne vjerodajnice, bit ćete prijavljeni. Pratite ovaj vodič za korak-po-korak upute o tome kako koristiti SSH za povezivanje s udaljenim poslužiteljem u Ubuntuu.

Korištenje naredbe su za prelazak u root

Možete se prijaviti u Linux sustav koristeći bilo koji drugi račun koji nije root, što je obično preporučeni način kada obavljate ne-administrativne zadatke. Kad god želite dobiti root privilegije, možete jednostavno upisati su u svoj terminal:

Sustav će od vas tražiti root lozinku, nakon čega ćete dobiti pristup sesiji root ljuske. Dok ste u ovoj sesiji ljuske, možete obavljati sve administrativne zadatke, a kad god se želite vratiti u normalnu ljusku, jednostavno pritisnite Ctrl + D. Alternativno, možete upisati exit u terminalu i pritisnuti enter.

Korištenje naredbe sudo za pokretanje naredbi s root privilegijama

Naredba sudo, koja je ukratko predstavljena na početku ovog vodiča, omogućuje vam izvršavanje jednolinijskih naredbi bez potrebe za ljuskom s root privilegijama. Jednostavno upišite sudo nakon čega slijedi naredba koju treba izvršiti:

Na primjer, da biste ažurirali svoj sustav, možete unijeti sljedeće:

Zatražit će od vas lozinku. Razlika između naredbi su i sudo je u tome što su traži root lozinku, dok sudo traži lozinku trenutnog korisnika. Pristup sudo prema zadanim postavkama nije omogućen korisnicima jer nosi velike sigurnosne implikacije za sustav. O tome ćemo više raspravljati u sljedećim odjeljcima.

Korištenje naredbe Visudo za uređivanje datoteke sudoers

Sudo privilegije konfigurirane su u datoteci sudoers koja se nalazi na /etc/sudoers. Ove privilegije su neophodne za svakog korisnika kako bi dobio pristup Linux sustavu. Svaka sintaktička pogreška spriječit će korisnike da se prijave u sustav, čime će sustav ostati neupotrebljiv.

Visudo naredba otvara datoteku s posebnim uređivačem koji provjerava sintaksu datoteke prilikom spremanja. Stoga je važno da koristite samo visudo naredbu za otvaranje datoteke kako biste spriječili da vaš poslužiteljski sustav postane neupotrebljiv. Prema zadanim postavkama, visudo je postavljen da otvara uređivač teksta s (vi) vim. Međutim, Ubuntu je konfigurirao visudo da koristi nano uređivač teksta. Na Debianu ili Ubuntuu možete se prebaciti na drugi uređivač unosom sljedeće naredbe:

Prikazuje popis uređivača iz kojih možete odabrati zadani uređivač, kao što je prikazano na snimci zaslona. Odaberite broj pored uređivača koji preferirate:

displays a list of editors

Na CentOS Linux distribuciji, uredite /etc/sudoers i dodajte retke u nastavku:

Unesite sljedeću naredbu. Ne zaboravite zamijeniti naziv your_editor_of_choice:

Naredba dodaje redak u datoteku ~/.bashrc. Unesite sljedeće u svoj terminal kako biste primijenili promjene:

Sada kada je vaš visudo konfiguriran, možete otvoriti datoteku na /etc/sudoers unosom naredbe:

Uređivanje datoteke Sudoers

Kada pokrenete prethodnu naredbu, datoteka se otvara u vašem primarnom uređivaču kako ste konfigurirali. Ispod je sadržaj datoteke:

Komentari su prilično opisni, ali u nastavku ćemo raspraviti što ti retci označavaju.

Zadani retci
  • Defaults env_reset – Ponovno postavlja varijable okruženja terminala kako bi se uklonile sve korisničke varijable. Stoga čisti potencijalno štetne varijable iz sudo sesije.
  • Defaults mail_badpass – Nalaže sustavu da šalje obavijesti e-poštom o neuspjelim pokušajima unosa sudo lozinke konfiguriranom mailto korisniku, obično root računu.
  • Defaults secure_path – Sadrži nekoliko putanja u datotečnom sustavu koje će sudo operacija pretraživati za aplikacije koje će koristiti prilikom izvršavanja kako bi se spriječilo korištenje drugih korisnički definiranih putanja koje bi mogle biti opasne za sustav.
Linije za specifikaciju korisničkih privilegija
Ova se linija razlikuje od ostalih i specificira privilegije root korisnika. Evo što svaka oznaka u liniji označava:

  1. root ALL=(ALL:ALL) ALL – Prvo polje specificira korisničko ime na koje će se pravilo primijeniti. U ovom slučaju to je root korisnik.
  2. root ALL=(ALL:ALL) ALL – Prvi ALL specificira da će se pravilo primijeniti na sve domaćine.
  3. root ALL=(ALL:ALL) ALL – Drugi ALL specificira da korisnik na kojeg se ovo pravilo odnosi (tj. root) može pokretati naredbe kao svi korisnici.
  4. root ALL=(ALL:ALL) ALL – Treći ALL specificira da korisnik na kojeg se ovo pravilo odnosi (tj. root) može pokretati naredbe kao sve grupe.
  5. root ALL=(ALL:ALL) ALL – Posljednji ALL specificira da se ova pravila primjenjuju na sve naredbe.

Prema onome što ovo pravilo ukazuje, root korisnik može pokrenuti bilo koju naredbu koristeći sudo nakon što unese ispravnu lozinku.

Linije za specifikaciju grupnih privilegija

Ove linije specificiraju pravila sudo privilegija koja se primjenjuju na grupe. Polja označavaju iste radnje kao i linije korisničkih privilegija, uz malu razliku. Počinju sa % kako bi označili nazive grupa.

Kao što možete vidjeti, admin grupa može izvršiti bilo koju naredbu kao bilo koji korisnik na bilo kojem domaćinu. Grupa sudo ima istu privilegiju uz dodatnu privilegiju izvršavanja naredbi kao bilo koja grupa.

Linija Include /etc/sudoers.d

Linija #includedir /etc/sudoers.d  može izgledati kao komentar zbog znaka # na početku linije. Međutim, ovo je direktiva za uključivanje koja označava da bi se datoteke unutar direktorija /etc/sudoers.d trebale učitati i koristiti kao dio sudoers datoteke. Datoteke unutar ovog direktorija slijede ista pravila kao i sudoers datoteka.

Svaka datoteka unutar direktorija koja nema točku (.) u sebi i ne završava na ~ se čita i dodaje u konfiguraciju sudoers datoteke. Ovaj direktorij omogućuje aplikacijama izmjenu sudo privilegija prilikom instalacije stavljanjem svih povezanih pravila unutar jedne namjenske datoteke u /etc/sudoers.d direktoriju bez mijenjanja zadane sudoers datoteke. Štoviše, kada želite pregledati ili poništiti privilegije za neku aplikaciju, možete jednostavno provjeriti ili izmijeniti datoteke unutar /etc/sudoers.d direktorija bez izravnog mijenjanja /etc/sudoers datoteke.

Kao opće pravilo, sve datoteke unutar direktorija /etc/sudoers.d uvijek bi se trebale uređivati pomoću visudo naredbe. Ispod je sintaksa, ne zaboravite zamijeniti naziv datoteke koju želite urediti u naredbi:

Dodjeljivanje Sudo privilegija korisniku

Kada novom korisniku dodijelite opći sudo pristup, to znači da ste korisničkom računu dali puni administrativni pristup sustavu. Ovo je uobičajen zadatak koji administratori sustava obavljaju prilikom stvaranja drugih ne-root korisnika sa sudo privilegijama.

U sustavima kao što je Ubuntu 20.04 koji već imaju administrativnu grupu opće namjene, možemo jednostavno dodijeliti sudo privilegije korisniku dodavanjem korisnika u tu grupu. Grupa sudo, kao što se vidi u /etc/sudoers datoteci, ima pune administrativne privilegije, a korisničko ime možemo dodati u grupu unosom sljedeće naredbe:

Opcionalno, možete koristiti gpasswd naredbu kako biste postigli istu stvar:

Na CentOS, zadana grupa sa sudo privilegijama naziva se wheel, pa privilegije možete dodijeliti pomoću naredbe:

Opcionalno, koristeći gpasswd naredbu, isto možete postići pomoću naredbe:

U nekim slučajevima, wheel grupa na CentOS-u može biti komentirana u datoteci /etc/sudoers. Da biste je omogućili, otvorite datoteku pomoću visudo i odkomentirajte redak s nazivom grupe. To možete učiniti uklanjanjem znaka # na početku retka: %wheel ALL=(ALL) ALL.

Stvaranje prilagođenih pravila

S poznavanjem opće sintakse sudoers datoteke koju ste do sada stekli, vrijeme je da postavite neka pravila.

Stvaranje aliasa

Aliasi vam omogućuju organiziranje vaše sudoers datoteke grupiranjem stavki pod različite „aliase”. Imamo tri direktive o kojima ćemo raspravljati u ovom odjeljku: User_Alias za stvaranje aliasa korisnika/grupa, Cmnd_Alias za stvaranje aliasa naredbi i Runas_Alias za dopuštanje drugom korisniku da se pokreće kao neki drugi korisnik.

Na primjer, korištenjem User_Alias, unutar vaše /etc/sudoers datoteke, možete dodati sljedeći isječak kako biste stvorili tri različite grupe korisnika. Neki korisnici mogu pripadati više od jednoj grupi:

Imajte na umu da svi nazivi grupa počinju velikim slovom. S gore dodanim aliasima grupa u datoteci /etc/sudoers, možete dodijeliti privilegiju za ažuriranje apt baze podataka grupi GROUPTWO dodavanjem sljedećeg pravila u /etc/sudoers datoteku:

Imajte na umu da bez navođenja korisnika/grupe pod kojom se pokreće, naredba sudo će uvijek prema zadanim postavkama koristiti root korisnika.

Evo primjera za Cmnd_Alias gdje stvaramo alias naredbe za gašenje i ponovno pokretanje sustava. Pravilo se zatim dodjeljuje grupi GROUPTHREE. Dodavanje sljedećih redaka unutar datoteke /etc/sudoers to postiže:

U gornjem isječku, prvi redak stvara alias naredbe pod nazivom POWER koji uključuje naredbe za isključivanje i ponovno pokretanje. Drugi redak omogućuje članovima grupe GROUPTHREE da pokrenu ovu naredbu.

Evo primjera za Runas_Alias, gdje stvaramo alias koji će omogućiti grupi korisnika da se pokreću kao drugi korisnik:

U gornjem isječku, prvi redak stvara alias pod nazivom WEB, navodeći da će se Alias pokretati kao korisnik apache ili korisnik www-data. Drugi redak dodjeljuje alias grupi GROUPONE. Sada članovi prve grupe mogu izvršavati naredbe kao korisnik apache ili www-data.

Pravila zaključavanja

U ovom odjeljku naučit ćete različite načine na koje možete kontrolirati kako sudo reagira na poziv. Neke su naredbe relativno bezopasne na jednokorisničkim sustavima. U takvim slučajevima možete dopustiti korisnicima da ih izvršavaju s root privilegijama bez potrebe za upisivanjem root lozinke. Na primjer, možete stvoriti pravilo koje korisnicima u grupi GROUPONE omogućuje pokretanje naredbe updatedb bez unosa lozinke dodavanjem sljedećeg u /etc/sudoers datoteku:

Oznaka NOPASSWD implicira da se lozinka neće tražiti. Popratna oznaka za oznaku NOPASSWD je PASSWD, što je zadano ponašanje. To implicira da se lozinka mora unijeti na upit.

Oznaka se primjenjuje na pravilo osim ako je ne nadjača njezina popratna oznaka, na primjer:

U ovom pravilu, korisnici u grupi GROUPTWO mogu izvršiti updatedb naredbu bez unosa lozinke. Međutim, moraju unijeti lozinku prije izvršavanja naredbe kill.

U nekim slučajevima možda ćete htjeti ograničiti korisnike u izvršavanju određenih naredbi kako biste spriječili neka opasna izvršavanja. Ovdje na scenu stupa NOEXEC oznaka. Neki programi mogu pokretati druge naredbe unutar svog sučelja. Primjer takvog programa je less. Ako upišete naredbu sa sljedećom sintaksom unutar less sučelja, ona će se izvršiti, što može uzrokovati neočekivano ponašanje.

Kako biste spriječili takvo ponašanje, možete dodati sljedeće pravilo u datoteku /etc/sudoers kako biste ograničili određenog korisnika identificiranog s korisničko_ime:

Dodatne informacije

U ovom odjeljku donosimo neke dodatne informacije, direktive i naredbe koje bi vam mogle zatrebati pri radu sa sudo.

Ako ste u konfiguraciji koristili Runas_Alias, navodeći da se korisnik ili grupa mogu pokretati kao drugi korisnik, možete izvršavati naredbe kao ti korisnici pomoću zastavice -u za korisnika i zastavice -g za grupe. Evo sintakse:

Svaka od naredbi će od vas tražiti da unesete povezanu lozinku. Radi praktičnosti, sudo sprema lozinku na neko vrijeme, tako da je ne morate unositi svaki put kada pokrenete naredbu sa sudo. Možda ćete htjeti očistiti to vrijeme nakon što završite s povlaštenim sudo naredbama unosom sljedeće naredbe:

U slučaju da imate više zadataka za obavljanje sa sudo privilegijama, a želite produžiti vrijeme prije traženja lozinke ili želite izbjeći da vas naredba sudo kasnije traži lozinku, možete obnoviti vrijeme upisivanjem sljedeće naredbe:

Naredba vas traži lozinku i sprema je u privremenu memoriju za kasniju upotrebu sudo.

Kako biste izlistali sudo privilegije definirane za vaše ime, možete unijeti sljedeću naredbu:

Naredba ispisuje sva pravila konfigurirana u datoteci /etc/sudoers koja se odnose na vaše korisničko ime. Iz tih pravila možete dobiti predodžbu o tome koje zadatke vaše korisničko ime može obavljati na sustavu. Evo primjera snimke zaslona:

screenshot

U nekim slučajevima možete izvršiti naredbe koje ne uspiju jer ste zaboravili ispred njih staviti sudo. U takvim scenarijima možda ćete morati ponovno upisati naredbu počevši sa sudo. Kako biste izbjegli ponovno upisivanje naredbe, možete upotrijebiti bash funkcionalnost za „ponavljanje zadnje naredbe”. Sintaksa su dva uskličnika. Možete izvršiti zadnju naredbu koju ste pokrenuli na svom terminalu unosom sljedećeg:

Na kraju, važno je znati da sudo jednostavno podiže naredbu koja se izvršava na sudo privilegije. Za dodatne informacije možete slijediti upute na ovoj poveznici kako biste se malo zabavili sa svojim korisnicima.

Zaključak

Kada radite s više korisnika, ključno je snalaženje s naredbom sudo i datotekom sudoers. U ovom smo vodiču predstavili osnove čitanja i mijenjanja datoteke sudoers, kao i različite metode koje možete koristiti za dobivanje root privilegija.

Uvijek imajte na umu da je odvajanje privilegija ono što Linux sustave čini sigurnima. Stoga se privilegije superkorisnika ne bi trebale davati običnim korisnicima. Dodijelite samo one privilegije koje su apsolutno potrebne određenom korisniku za obavljanje njegovih specifičnih zadataka u sustavu, a ne sve privilegije.

Sretno računanje!

author

Manpreet Singh

Autor · CloudSigma

Preslav Dobrev je kreativni dizajner u CloudSigma, usredotočen na dosljedan poslovni identitet korištenjem tradicionalnih i inovativnih marketinških kanala. Vješt je u spajanju umjetničke vizije sa strateškim marketingom kako bi stvorio dojmljive brendirane priče.

Komentari

Još nema komentara. Budite prvi.