Problème
Lorsqu’on utilise sudo
,
il y a une protection pour ne pas utiliser le PATH
de l’utilisateur. Ça peut être gênant lorsque l’on souhaite utiliser
indirectement des outils que l’on a installés localement.
On peut en effet lancer un outil en donnant son chemin,
mais s’il s’agit d’un script qui fait appel à d’autres commandes,
il va normalement les chercher dans le PATH
.
Dans mon cas par exemple, je voulais utiliser
$ sudo make install
qui utilisait un compilateur que j’avais installé localement.
Solution 1
Modifier le fichier /etc/sudoers
:
$ sudo visudo
ATTENTION : utiliser visudo
pour éditer le fichier /etc/sudoers
car ça
protège contre les erreurs… Et je vous assure (par expérience) qu’on est bien
embêté quand on se retrouve avec une erreur de syntaxe dans ce fichier !
Commenter :
# Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
ET remplacer par :
Defaults !secure_path
Mais cette méthode a un inconvénient : on perd les PATH système comme
/usr/sbin
par exemple.
Solution 1b
Similaire à la précédente
- c’est-à-dire en modifiant le fichier
/etc/sudoers
- mais sans ôter lesecure_path
, et en y ajoutant plutôt le(s) chemin(s) manquant(s).
Exemple : je fais confiance à ce qui est dans /home/moi/bin
:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/moi/bin"
Ça peut être intéressant si on a juste un ou deux chemins supplémentaires, toujours les mêmes.
Solution 2
Une méthode plus douce et locale est de faire :
$ sudo env PATH=$PATH cmd
Ce qui permet d’une part de ne pas modifier le comportement normal de sudo
,
et d’autre part, de ne faire cette manip que lorsqu’on en a l’utilité.
Voir aussi :
- Disque dur externe
- Vérifier l'intégrité d'un fichier téléchargé
- Bash : faire un menu
- Problème de boot
- Zenity : des fenêtres pour les scripts
- (X)ubuntu : mise à niveau vers la 14.04
- Xubuntu: connexion automatique
- Apt-get et autres pour la gestion de paquets Debian
- Linux : ramassis d'astuces diverses
- Bash sur la ligne de commande
- Filtrage de texte : sed, awk, etc.
- Afficher un pourcentage dans une page HTML
- VNC : Virtual Network Computing
- Git : déménagement d'un dépôt
- Quelques liens au sujet de l'analyse statique
- Ocaml: mon principal langage de développement
- Disque dur externe
- Les profiles dans Firefox
- Cryptographie et mail sous Android
- Quelques liens au sujet du C
- Git rebase : pour diviser un commit