Cuando ejecuto sudo, ¿qué sucede exactamente con mi entorno?
Cuando ejecuto sudo command
, no parece ver mi entorno o el de la raíz. Por ejemplo, mi ruta para ambos incluye /usr/local/bin
, pero si intento ejecutar uno de los programas sin la ruta completa, falla.
Pensé que sudo se ejecutaba como root y, por lo tanto, obtuve el entorno de root. ¿Hay alguna manera diferente de que bash se ejecute bajo sudo que bajo root o mi usuario normal?
EDITAR:
He estado usando sudo -i
últimamente, pero recientemente ha estado causando problemas porque mi directorio de trabajo actual está configurado en /root
. Esto es como se esperaba (más o menos), pero todavía no entiendo por qué sudo no reconoce mis ejecutables /usr/local/bin
.
EDITAR:
Estoy ejecutando Fedora 15.
fuente
PATH
, y a veces no es fácil encontrar quién lo anula en último lugar. Podría ser alguna configuración del sistema (por ejemplo, en PAM), sudo o una secuencia de comandos de perfil posterior.Respuestas:
No sé acerca de los valores predeterminados en Fedora, pero en Debian los
sudo
valores predeterminados para usar lasecure_path
opción con un valor predeterminado de/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
.Esto significa que la ruta cambia a ese valor cada vez que la usa
sudo
; pero cuando lo usasudo -i
, la ruta cambia después de eso por los archivos RC del usuario raíz.fuente
secure_path
opción. El valor predeterminado no se incluyó/usr/local/bin
en mi instalación. ¡Gracias, esto realmente ayudó a aclarar las cosas!Puedes comprobar esto bastante fácil con cosas como
Compare la salida de
Y cosas como
De esa manera, puede intentar averiguar qué falta en su configuración.
fuente
/usr/local/bin
no está en mi sudo env, pero está en mi root env y usuario env. ¿Por qué es esto?root
, como se esperaba. ¿Qué podría estar causando que mi sudo env sea diferente a mi raíz env?/usr/local/bin
a la ruta de root (desafortunadamente tuve que hacer esto manualmente)?El
sudo -i
comando simula el inicio de sesión inicial. En mi sistema Debian, también dice que:fuente
Puede ajustar
sudo
elenv_keep
parámetro para incluirloPATH
, aunque debe tener en cuenta las implicaciones de seguridad de hacerlo.... iniciará su
$EDITOR
, luego puede hacer cambios aDefaults env_keep =
... según corresponda.Además, puede agregar / usr / local / bin a la ruta del sistema agregando archivos a
/etc/profile.d
.p.ej:
fuente
sudo
tiene un manejo especial dePATH
lo que no debe hacer esto.