Instalé eclipse en mi directorio de inicio y puse su ruta en PATH
en ~/.profile
.
Entonces funciona por
$ eclipse
Pero cuando lo llamas con sudo
, eclipse
no se encuentra:
$ sudo eclipse
sudo: eclipse: command not found
Qué PATH
hace sudo eclipse
usar para buscar eclipse
? ¿Es el usuario root
? 's PATH
?
Gracias.
Respuesta aceptada:
sudo
por defecto usa un mínimo PATH
, para que sea seguro para que lo use el raíz usuario. Eso no es necesariamente lo mismo que PATH
obtendría al iniciar sesión como raíz usuario, o haciendo
sudo su -
Por ejemplo, en las versiones más recientes de Red Hat, noté que la ruta omite /usr/local/bin
.
La página del manual resume esto en una sección titulada Notas de seguridad :
sudo intenta estar seguro al ejecutar comandos externos.
Hay dos formas distintas de tratar con las variables de entorno. De forma predeterminada, env_reset
La opción sudoers
está habilitada. Esto hace que los comandos se ejecuten con un entorno mínimo que contiene TERM
, PATH
, HOME
, SHELL
, LOGNAME
, USER
y USERNAME
además de las variables del proceso de invocación
permitidas por env_check
y env_keep
opciones de sudoers. Hay efectivamente una lista blanca para
variables de entorno.
Lectura adicional:
-
sudoers:lista de qué usuarios pueden ejecutar qué
secure_path
Ruta utilizada para cada comando ejecutado desde sudo. Si no confía en que las personas que ejecutan sudo
tengan una variable de entorno PATH sensata, es posible que desee usar esto. Otro uso es si
desea que la "ruta raíz" esté separada de la "ruta del usuario". Usuarios en el grupo
especificado porexempt_group
no se ven afectados porsecure_path
. Esta opción no
está configurada de forma predeterminada. -
sudo:ejecuta un comando como otro usuario