Kako pokrenuti shell skripte sa Sudo komandom u Linuxu


sudo je moćan alat komandne linije koji omogućava “dozvoljenom korisniku ” da pokrene komandu kao drugi korisnik (superkorisnik po defaultu), kako je definirano sigurnosnom politikom. Na većini, ako ne i svim Linux sistemima, sigurnosnu politiku pokreće datoteka /etc/sudoers.

Pročitajte također: 10 korisnih Sudoers konfiguracija za postavljanje 'sudo' u Linuxu

Stoga, da biste pokrenuli shell skriptu ili program kao root, trebate koristiti naredbu sudo. Međutim, sudo prepoznaje i pokreće samo naredbe koje postoje u direktorijima navedenim u sigurnom_putanju u /etc/sudoers, osim ako je komanda prisutna u secure_path, suprotstavit ćete grešku kao što je ova ispod.

Ovo će se dogoditi čak i ako skripta postoji u direktoriju u varijabli okruženja PATH, jer kada korisnik pozove sudo, PATH se zamjenjuje sa sigurna_puta.

echo  $PATH
ls  -l
sudo proconport.sh 80

U gornjem scenariju, direktorij /home/aaronkilik/bin je u varijabli okruženja PATH i pokušavamo pokrenuti skriptu /home/aaronkilik/bin /proconport.sh (pronalazi proces koji sluša na portu) sa root privilegijama.

Zatim smo naišli na grešku “sudo: proconport.sh: komanda nije pronađena”, jer /home/aaronkilik/bin nije u sudo secure_path > kao što je prikazano na sledećem snimku ekrana.

Da ovo popravimo, moramo dodati direktorij koji sadrži naše skripte u sudo secure_path korištenjem visudo komande uređivanjem datoteke /etc/sudoers kao što slijedi.

sudo visudo

Pažnja: Ova metoda ima ozbiljne sigurnosne implikacije, posebno na serverima koji rade na Internetu. Na ovaj način rizikujemo da izložimo naše sisteme raznim napadima, jer napadač koji uspije pristupiti nesigurnom (bez privilegija superkorisnika) direktoriju koji je dodan u secure_path, može pokrenuti zlonamjernu skriptu/program sa sudo komandom<.

Iz sigurnosnih razloga, provjerite sljedeći članak sa sudo web stranice koji objašnjava ranjivost u vezi sa secure_path: https://www.sudo.ws/sudo/alerts/secure_path.html

Po mogućnosti, možemo dati apsolutnu putanju do skripte dok je izvodimo sa sudo:

sudo ./proconport.sh 80

To je to! Možete pratiti listu članaka o sudo komandi:

  1. Kako pokrenuti naredbu 'sudo' bez unosa lozinke u Linuxu
  2. Kako zadržati sesiju vremenskog ograničenja 'sudo' lozinke duže u Linuxu
  3. Kako popraviti “Korisničko ime nije u sudoers datoteci. Ovaj incident će biti prijavljen” u Ubuntu
  4. Neka vas Sudo uvrijedi kada unesete pogrešnu lozinku

Ako imate bilo kakvih pitanja ili razmišljanja o ovom članku, podijelite ih s nama putem obrasca za komentare ispod.