GNU/Linux >> Tutoriels Linux >  >> Linux

Comment faire en sorte que `sudo` préserve $path ?

J'ai un programme qui est installé dans un répertoire personnalisé sous /opt. Pour faciliter son exécution, j'ai modifié mon bashrc pour ajouter ledit répertoire à mon chemin :

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

Cela fonctionne bien si je veux exécuter le programme sans sudo. Cependant, si j'essaie de l'exécuter avec sudo, il échoue avec une erreur "commande introuvable".

$ sudo godi_console
sudo: godi_console: command not found

L'inspection de la variable PATH après avoir utilisé sudo révèle qu'elle n'inclut pas le même PATH que celui que j'ai en tant qu'utilisateur normal :

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

Pourquoi le PATH n'est-il pas le même ? Est-ce que je fais quelque chose de mal? Je suis sur Debian Jessie, si cela fait une différence.

Une chose que j'ai essayée était d'invoquer /opt/godi/sbin/godi_console directement, en passant le chemin absolu vers l'exécutable. Malheureusement, cela n'a pas aidé dans ce cas particulier car godi_console lui-même dépend du fait que le PATH est correctement défini.

Réponse acceptée :

Vous pouvez toujours faire :

sudo env "PATH=$PATH" godi_console

Par mesure de sécurité sur Debian, /etc/sudoers a le secure_path option définie sur une valeur sûre.

Notez que :

sudo "PATH=$PATH" godi_console

sudo traite les arguments principaux contenant = les caractères en tant qu'affectations de variables d'environnement par eux-mêmes, fonctionneraient également lors de l'exécution de godi_console avec votre $PATH (par opposition au secure_path ) dans son environnement, mais n'affecterait pas sudo le chemin de recherche de l'exécutable, donc n'aiderait pas sudo en trouvant que godi_console .


Linux
  1. Comment installer Vagrant sous Linux

  2. Comment configurer des vHosts dans Apache

  3. Comment ajouter correctement un chemin à un chemin ?

  4. Comment "alias Sudo !!" ?

  5. Comment exécuter rétroactivement un script en tant que root ?

Comment ajouter un répertoire à PATH sous Linux

Comment rendre un fichier exécutable sous Linux

Comment faire d'un utilisateur un administrateur dans Ubuntu

Comment ajouter proprement à $path ?

Comment puis-je modifier le $PATH sous Linux ?

Comment définir le chemin pour les commandes sudo