Hvordan kjøre Shell-skript med Sudo Command i Linux


sudo er et kraftig kommandolinjeverktøy som lar en «tillatt bruker» kjøre en kommando som en annen bruker (superbrukeren som standard), som definert av en sikkerhetspolicy. På de fleste om ikke alle Linux-systemer er sikkerhetspolicyen drevet av filen /etc/sudoers.

Derfor, for å kjøre et skallskript eller program som root, må du bruke sudo-kommandoen. Imidlertid gjenkjenner og kjører sudo bare kommandoer som finnes i kataloger spesifisert i secure_path i /etc/sudoers, med mindre en kommando er til stede i secure_path, vil du motvirke en feil som den nedenfor.

Dette vil skje selv om skriptet finnes i en katalog i miljøvariabelen PATH, fordi når en bruker påkaller sudo, erstattes PATH med sikker_sti.

$ echo  $PATH
$ ls  -l
$ sudo proconport.sh 80

I scenariet ovenfor er katalogen /home/aaronkilik/bin i miljøvariabelen PATH og vi prøver å kjøre skriptet /home/aaronkilik/bin/proconport.sh (finner prosesslytting på en port) med root-privilegier.

Så traff vi feilen \sudo: proconport.sh: kommando ikke funnet, siden /home/aaronkilik/bin ikke er i sudo secure_path som vist i neste skjermbilde.

For å fikse dette, må vi legge til katalogen som inneholder skriptene våre i sudo secure_path ved å bruke visudo-kommandoen ved å redigere filen /etc/sudoers som følger.

$ sudo visudo

OBS: Denne metoden har alvorlige sikkerhetsimplikasjoner, spesielt på servere som kjører på Internett. På denne måten risikerer vi å utsette systemene våre for ulike angrep, fordi en angriper som klarer å få tilgang til en usikker (uten superbrukerrettigheter) katalog som er lagt til secure_path, kan kjøre et ondsinnet skript/program med sudo-kommando.

Av sikkerhetsgrunner, sjekk ut følgende artikkel fra sudo-nettstedet som forklarer en sårbarhet knyttet til secure_path: https://www.sudo.ws/sudo/alerts/secure_path.html

Helst kan vi gi den absolutte banen til et skript mens vi kjører det med sudo:

$ sudo ./proconport.sh 80

Det er det! Du kan følge listen over artikler om sudo-kommando:

  1. Hvordan kjører du «sudo»-kommando uten å angi et passord i Linux
  2. Hvordan beholde «sudo»-passordtidsavbruddsøkten lenger i Linux
  3. Slik fikser du \Brukernavn er ikke i sudoers-filen. Denne hendelsen vil bli rapportert i Ubuntu
  4. La Sudo fornærme deg når du skriver inn feil passord

Hvis du har spørsmål eller tanker angående denne artikkelen, del med oss via kommentarskjemaet nedenfor.