Ou` sudo trouve-t-il son PATH ?
Le
Nicolas Richard

Bonjour,
Quand j'execute sudo, il utilise une valeur de la variable PATH dont je
ne parviens pas à déterminer l'origine. Ci-dessous, la sortie de
quelques commandes qui me semblaient pertinentes mais sans succès.
La question à laquelle je cherche réponse est : d'où sort la=
référence
au chemin /usr/local/texlive/*2011*/bin/i386-linux qui apparait dans la
sortie du premier appel à sudo ? (2e commande lancée ci-dessous)
# vérif du PATH actuel
$ env | grep ^PATH
PATH=~/bin/overrideglobal:~/bin/overrideglobal:/usr/local/bin:/usr/bin:/b=
in:/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/4.5.4:/usr/games/bin:/usr/local/=
texlive/2012/bin/i386-linux:~/bin:~/bin
$ sudo env | grep ^PATH
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/opt/bi=
n:/usr/local/texlive/2011/bin/i386-linux
$ sudo -i env | grep ^PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bi=
n:/usr/i686-pc-linux-gnu/gcc-bin/4.5.4:/usr/local/texlive/2012/bin/i386-lin=
ux:/root/bin
# je tente de comprendre
$ sudo grep -r texlive/2011 /etc
# mais je comprends pas.
$ sudo grep -r texlive/2011 ~root
/root/.bash_history:grep texlive/2011 * -r
/root/.bash_history:grep texlive/2011 . -r
/root/.bash_history:grep texlive/2011 .* -r
# Contenu de deux fichiers, modulo commentaires et lignes blanches :
$ grep -v '^#|^$' /etc/environment
$ grep -v '^#|^$' /etc/security/pam_env.conf
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bi=
n:/usr/i686-pc-linux-gnu/gcc-bin/4.5.3:/usr/local/texlive/2012/bin/i386-lin=
ux:/root/bin
Pour info, la distribution est Gentoo ; j'ai également demandé su=
r la
mailing list gentoo
(http://permalink.gmane.org/gmane.linux.gentoo.user/260603), sans
succès.
Merci d'avance pour vos pistes de réflexion.
--
Nico.
Quand j'execute sudo, il utilise une valeur de la variable PATH dont je
ne parviens pas à déterminer l'origine. Ci-dessous, la sortie de
quelques commandes qui me semblaient pertinentes mais sans succès.
La question à laquelle je cherche réponse est : d'où sort la=
référence
au chemin /usr/local/texlive/*2011*/bin/i386-linux qui apparait dans la
sortie du premier appel à sudo ? (2e commande lancée ci-dessous)
# vérif du PATH actuel
$ env | grep ^PATH
PATH=~/bin/overrideglobal:~/bin/overrideglobal:/usr/local/bin:/usr/bin:/b=
in:/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/4.5.4:/usr/games/bin:/usr/local/=
texlive/2012/bin/i386-linux:~/bin:~/bin
$ sudo env | grep ^PATH
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/opt/bi=
n:/usr/local/texlive/2011/bin/i386-linux
$ sudo -i env | grep ^PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bi=
n:/usr/i686-pc-linux-gnu/gcc-bin/4.5.4:/usr/local/texlive/2012/bin/i386-lin=
ux:/root/bin
# je tente de comprendre
$ sudo grep -r texlive/2011 /etc
# mais je comprends pas.
$ sudo grep -r texlive/2011 ~root
/root/.bash_history:grep texlive/2011 * -r
/root/.bash_history:grep texlive/2011 . -r
/root/.bash_history:grep texlive/2011 .* -r
# Contenu de deux fichiers, modulo commentaires et lignes blanches :
$ grep -v '^#|^$' /etc/environment
$ grep -v '^#|^$' /etc/security/pam_env.conf
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bi=
n:/usr/i686-pc-linux-gnu/gcc-bin/4.5.3:/usr/local/texlive/2012/bin/i386-lin=
ux:/root/bin
Pour info, la distribution est Gentoo ; j'ai également demandé su=
r la
mailing list gentoo
(http://permalink.gmane.org/gmane.linux.gentoo.user/260603), sans
succès.
Merci d'avance pour vos pistes de réflexion.
--
Nico.
$ sudo grep -i PATH /etc/sudoers
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Cela apporte au moins un élément de réponse : si je rajoute cette ligne,
cela me change effectivement le PATH. Mais je n'ai pas encore compris oà ¹
était inscrit la valeur actuelle (en tout cas, elle n'est pas dans
/etc/sudoers).
(...quelques minutes plus tard...)
AH HA !
L'incantation `sudo sudo -V' montre ceci (j'omets les passages superflus)
Configure options:
(...)
--with-secure-path=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/loca l/sbin:/opt/bin:/usr/local/texlive/2011/bin/i386-linux
(...)
Cela me remplit de joie d'avoir trouvé le problème, et je me sens
humilié de n'avoir pas vu ce secure_path dans le manpage de sudoers
(d'autant que cette valeur compilée est indiquée texto dans la pa ge
man).
Bref, merci.
--
Nico.