GNU/Linux >> Linux Esercitazione >  >> Linux

Come fare in modo che `sudo` conservi il percorso $?

Ho un programma che è installato in una directory personalizzata in /opt. Per semplificare l'esecuzione, ho modificato il mio bashrc per aggiungere detta directory al mio percorso:

export PATH=$PATH:/opt/godi/bin:/opt/godi/sbin

Funziona bene se voglio eseguire il programma senza sudo. Tuttavia, se provo a eseguirlo con sudo, fallisce con un errore "comando non trovato".

$ sudo godi_console
sudo: godi_console: command not found

L'ispezione della variabile PATH dopo aver usato sudo rivela che non include lo stesso PATH che ho come utente normale:

$ sudo sh
# echo $PATH                 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Perché il PERCORSO non è lo stesso? Sto facendo qualcosa di sbagliato? Sono su Debian Jessie, se può fare la differenza.

Una cosa che ho provato è stata invocare direttamente /opt/godi/sbin/godi_console, passando il percorso assoluto all'eseguibile. Sfortunatamente, ciò non ha aiutato in questo caso particolare perché godi_console stesso dipende dal PERCORSO impostato correttamente.

Risposta accettata:

Puoi sempre fare:

sudo env "PATH=$PATH" godi_console

Come misura di sicurezza su Debian, /etc/sudoers ha il secure_path opzione impostata su un valore sicuro.

Nota che:

sudo "PATH=$PATH" godi_console

Dove sudo tratta argomenti iniziali contenenti = caratteri come assegnazioni di variabili di ambiente da solo, funzionerebbero anche per eseguire godi_console con tuo $PATH (al contrario di secure_path ) nel suo ambiente, ma non influirà su sudo è il percorso di ricerca dell'eseguibile, quindi non aiuterebbe sudo nel trovare quel godi_console .


Linux
  1. Come configurare vHost in Apache

  2. Come aggiungere correttamente un percorso al percorso?

  3. Come eseguire retroattivamente uno script come root?

  4. Come fare una VPN

  5. Come potrei aggiungere dir a $ PATH in Makefile?

Come aggiungere una directory a PATH in Linux

Come fare in modo che sudo ricordi la password più a lungo

Come rendere eseguibile un file in Linux

Come rendere un utente un amministratore in Ubuntu

Come far funzionare insieme le chiavi condivise .ssh/authorized_keys e sudo?

Come posso modificare $ PATH su Linux?