Sådan køres shell-scripts med Sudo Command i Linux


sudo er et kraftfuldt kommandolinjeværktøj, der gør det muligt for en "tilladt bruger" at køre en kommando som en anden bruger (superbrugeren som standard), som defineret af en sikkerhedspolitik. På de fleste, hvis ikke alle Linux-systemer, drives sikkerhedspolitikken af filen/etc/sudoers.

Derfor skal du bruge sudo-kommandoen for at køre et shell-script eller -program som root. Imidlertid genkender og kører sudo kun kommandoer, der findes i mapper, der er angivet i den sikre_sti i/etc/sudoerne, medmindre en kommando er til stede i den sikre_sti, vil du modvirke en fejl som den nedenfor.

Dette vil ske, selvom scriptet findes i et bibliotek i PATH-miljøvariablen, for når en bruger påberåber sudo, erstattes PATH med secure_path.

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

I ovenstående scenarie er biblioteket/home/aaronkilik/bin i PATH-miljøvariablen, og vi forsøger at køre scriptet /home/aaronkilik/bin/proconport.sh (finder proceslyttning på en port) med rodrettigheder.

Derefter stødte vi på fejlen "sudo: proconport.sh: kommando ikke fundet", da/home/aaronkilik/bin ikke er i sudo secure_path som vist i næste skærmbillede.

For at løse dette skal vi tilføje biblioteket, der indeholder vores scripts, i sudo secure_path ved hjælp af visudo-kommandoen ved at redigere/etc/sudoers-filen som følger.

$ sudo visudo

OBS: Denne metode har alvorlige sikkerhedsimplikationer, især på servere, der kører på Internettet. På denne måde risikerer vi at udsætte vores systemer for forskellige angreb, fordi en angriber, der formår at få adgang til en usikker (uden superbrugerrettigheder) -mappe, der er føjet til secure_path, kan køre et ondsindet script/program med sudo-kommando.

Af sikkerhedsårsager skal du tjekke den følgende artikel fra sudo-webstedet, der forklarer en sårbarhed i forbindelse med sikker_sti: https://www.sudo.ws/sudo/alerts/secure_path.html

Fortrinsvis kan vi give den absolutte sti til et script, mens vi kører det med sudo:

$ sudo ./proconport.sh 80

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

  1. Sådan køres 'sudo' kommando uden at indtaste en adgangskode i Linux
  2. Sådan holdes 'sudo' adgangskode-timeout-session længere i Linux
  3. Sådan løses “Brugernavn findes ikke i sudoers-filen. Denne hændelse vil blive rapporteret ”i Ubuntu
  4. Lad Sudo fornærme dig, når du indtaster forkert adgangskode

Hvis du har spørgsmål eller tanker vedrørende denne artikel, så del med os via nedenstående kommentarformular.