Ricerca nel sito web

Come eseguire script di shell con il comando Sudo in Linux


sudo è un potente strumento da riga di comando che consente a un "utente autorizzato" di eseguire un comando come un altro utente (il superutente per impostazione predefinita), come definito da una politica di sicurezza. Sulla maggior parte se non su tutti i sistemi Linux, la politica di sicurezza è guidata dal file /etc/sudoers.

Leggi anche: 10 utili configurazioni dei sudoer per impostare "sudo" in Linux

Pertanto, per eseguire uno script o un programma di shell come root, è necessario utilizzare il comando sudo. Tuttavia, sudo riconosce ed esegue solo comandi che esistono nelle directory specificate in secure_path in /etc/sudoers, a meno che non sia presente un comando in il secure_path, contrasterai un errore come quello riportato di seguito.

Ciò accadrà anche se lo script esiste in una directory nella variabile ambientale PATH, perché quando un utente invoca sudo, PATH viene sostituito con percorso_sicuro.

echo  $PATH
ls  -l
sudo proconport.sh 80

Nello scenario precedente, la directory /home/aaronkilik/bin si trova nella variabile di ambiente PATH e stiamo provando a eseguire lo script /home/aaronkilik/bin /proconport.sh (trova il processo in ascolto su una porta) con privilegi di root.

Quindi abbiamo riscontrato l'errore "sudo: proconport.sh: comando non trovato", poiché /home/aaronkilik/bin non è nel sudo secure_path come mostrato nella schermata successiva.

Per risolvere questo problema, dobbiamo aggiungere la directory contenente i nostri script nel sudo secure_path utilizzando il comando visudo modificando il file /etc/sudoers come segue.

sudo visudo

Attenzione: questo metodo ha gravi implicazioni sulla sicurezza soprattutto sui server che funzionano su Internet. In questo modo rischiamo di esporre i nostri sistemi a vari attacchi, perché un utente malintenzionato che riesce ad accedere a una directory non protetta (senza privilegi di superutente) che è stata aggiunta a secure_path, può eseguire uno script/programma dannoso con comando sudo.

Per motivi di sicurezza, consulta il seguente articolo dal sito Web sudo che spiega una vulnerabilità relativa a secure_path: https://www.sudo.ws/sudo/alerts/secure_path.html

Preferibilmente, possiamo fornire il percorso assoluto di uno script mentre lo eseguiamo con sudo:

sudo ./proconport.sh 80

Questo è tutto! Puoi seguire l'elenco di articoli sul comando sudo:

  1. Come eseguire il comando "sudo" senza inserire una password in Linux
  2. Come mantenere la sessione di timeout della password "sudo" più a lungo in Linux
  3. Come risolvere il problema "Il nome utente non è nel file sudoers. Questo incidente verrà segnalato” in Ubuntu
  4. Lascia che Sudo ti insulti quando inserisci una password errata

Se hai domande o pensieri riguardo a questo articolo, condividili con noi tramite il modulo di commento qui sotto.