En mi máquina virtual fedora, cuando ejecuto mi cuenta de usuario, tengo /usr/local/bin
en mi camino:
[[email protected] ~]$ env | grep PATH
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/justin/bin
Y lo mismo cuando se ejecuta su
:
[[email protected] ~]$ su -
Password:
[[email protected] justin]# env | grep PATH
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/justin/bin
Sin embargo, cuando se ejecuta a través de sudo
, este directorio no está en la ruta:
[[email protected] justin]# exit
[[email protected] ~]$ sudo bash
[[email protected] ~]# env | grep PATH
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin
¿Por qué la ruta sería diferente cuando se ejecuta a través de sudo
? ?
Respuesta aceptada:
Echa un vistazo a /etc/sudoers
. El archivo predeterminado en Fedora (así como en RHEL, Ubuntu y similares) incluye esta línea:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
Lo que garantiza que su ruta esté limpia cuando ejecute binarios bajo sudo. Esto ayuda a proteger contra algunas de las preocupaciones mencionadas en esta pregunta. También es conveniente si no tienes /sbin
y /usr/sbin
en tu propio camino.