En resumen : ¿cómo hacer que sudo no elimine la RUTA cada vez?
Tengo algunos sitios web implementados en mi servidor (pruebas de Debian) escritos con Ruby on Rails. Uso Mongrel + Nginx para alojarlos, pero hay un problema que surge cuando necesito reiniciar Mongrel (por ejemplo, después de hacer algunos cambios).
Todos los sitios se verifican en VCS (git, pero no es importante) y tienen el propietario y el grupo configurados para mi usuario, mientras que Mongrel se ejecuta bajo el usuario, huh, mestizo que está severamente restringido en sus derechos. Por lo tanto, Mongrel debe iniciarse en la raíz (puede cambiar automáticamente el UID) o mestizo.
Para administrar mongrel, uso la gema mongrel_cluster porque permite iniciar o detener cualquier cantidad de servidores de Mongrel con un solo comando. Pero necesita que el directorio /var/lib/gems/1.8/bin esté en RUTA: esto no es suficiente para iniciarlo con una ruta absoluta .
La modificación de la RUTA en la raíz .bashrc no cambió nada, tampoco se modificaron env_reset y env_keep de sudo.
Entonces, la pregunta: ¿cómo agregar un directorio a la RUTA o mantener la RUTA del usuario en sudo?
Actualización: algunos ejemplos
$ env | grep PATH
PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/var/lib/gems/1.8/bin
$ sudo cat /etc/sudoers | egrep -v '^$|^#'
Defaults env_keep = "PATH"
root ALL=(ALL) ALL
%sudo ALL=NOPASSWD: ALL
$ sudo env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
También puedo decir que funciona exactamente de esta manera en Debian estable (lenny) también.
Respuestas:
Luchó con el mismo problema durante unas horas. En Debian Lenny, puede solucionarlo agregando
al archivo de sudoers.
Esta es la única forma de evitar la opción compilada --secure-path, (que yo sepa).
En particular, esto también eximirá a los usuarios de la necesidad de ingresar su contraseña cuando sudo.
fuente
Si te has
secure_path
instalado/etc/sudoers
, puedes jugar conenv_reset
/env_keep
todo lo que quieras y no hará ninguna diferencia en el camino. Si ve algo como esto, coméntelo.fuente
Yo diría que explore las posibilidades env_reset y env_keep en el hombre sudo . Pero parece que ya lo has hecho (simplemente llamas a env_keep "keepenv"). Si deshabilita la opción env_reset (el valor predeterminado está habilitado), creo que no se supone que borre ninguna variable env. Pero esto es menos seguro.
También hay una opción secure_path para sudo; Creo que esto está habilitado por defecto. Podrías intentar deshabilitarlo.
Las opciones anteriores se establecen en su archivo / etc / sudoers. También existe la
-i
opción de línea de comandos para sudo. Eso hará que sudo ejecute /root/.profile o /root/.login. Podrías establecer tu camino deseado allí.fuente
Bueno, estás haciendo algo mal. Además, no especificó qué hizo con su archivo / etc / sudoers. Esto es lo que debería haber hecho: este es un sistema CentOS, por cierto:
Primero, esto es con la configuración correcta de env_keep (observe que PATH está allí):
Se ve bien. Ahora eliminemos la configuración env_keep e intentemos de nuevo:
Qué triste camino:
fuente