Establecer la RUTA para que se aplique a todos los usuarios, incluido root / sudo

41

Las instrucciones en ¿Cómo configuro las variables PATH para todos los usuarios en un servidor? trabajar para establecer la RUTA para todos los usuarios 'normales'. Sin embargo, si lo hago sudo -sy luego printenv PATHla ruta actualizada no se muestra. He echado un vistazo, por ejemplo, a la configuración de la ruta de TeX Live para root , pero esto no parece tener sentido para mí, tal vez porque soy de un fondo de Windows. ¿Hay alguna forma de establecer la ruta verdaderamente en todo el sistema, de modo que las entradas sean heredadas por absolutamente todos los procesos que se ejecutan en el sistema?

Joseph Wright
fuente

Respuestas:

43

Actualizar:

La configuración de las variables de entorno global aún debe realizarse /etc/environment, pero como usted señaló, el uso sudo -stiene el efecto de que estas variables se "desvanecen".

La razón de esto es que sudotiene una política de restablecer el entorno y establecer una ruta segura . Está habilitado por defecto:

/etc/sudoers:

Defaults  env_reset
Defaults  secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Por lo tanto, todo lo que se establece en /etc/environmentel camino se anula sudo.

La página del manual para los sudoersestados:

   env_reset       If set, sudo will reset the environment to only contain
                   the LOGNAME, MAIL, SHELL, USER, USERNAME and the SUDO_*
                   variables.  Any variables in the caller's environment
                   that match the env_keep and env_check lists are then
                   added.  The default contents of the env_keep and
                   env_check lists are displayed when sudo is run by root
                   with the -V option.  If the secure_path option is set,
                   its value will be used for the PATH environment
                   variable.  This flag is on by default.

Como solución alternativa, puede usar sudo sueso que proporcionará un shell con privilegios de root pero que contiene la RUTA correcta.


Respuesta original

Deberías configurarlo /etc/environment.

Intente sudo YOUR_TEXT_EDITOR /etc/environment(asegúrese de crear una copia de seguridad primero).

Para más información: EnvironmentVariables

Variables de entorno de todo el sistema

La configuración de las variables de entorno que afectan al sistema en su conjunto (en lugar de solo a un usuario en particular) no debe colocarse en ninguno de los muchos scripts de nivel de sistema que se ejecutan cuando se carga el sistema o la sesión de escritorio, sino en

/etc/environment- Este archivo está específicamente diseñado para configuraciones variables de entorno de todo el sistema. No es un archivo de script, sino que consiste en expresiones de asignación, una por línea. Específicamente, este archivo almacena la configuración regional y la configuración de ruta de todo el sistema.

No recomendado:

/etc/profile- Este archivo se ejecuta cada vez que se ingresa un shell de inicio de sesión bash (por ejemplo, al iniciar sesión desde la consola o sobre ssh), así como por el DisplayManager cuando se carga la sesión de escritorio. Este es probablemente el archivo al que se hará referencia cuando pregunte a los veteranos administradores del sistema UNIX sobre las variables de entorno. Sin embargo, en Ubuntu, este archivo hace poco más que invocar el archivo /etc/bash.bashrc.

/etc/bash.bashrc- Esta es la versión de todo el sistema del archivo ~ / .bashrc. Ubuntu está configurado de manera predeterminada para ejecutar este archivo cada vez que un usuario ingresa a un shell o al entorno de escritorio.

lgarzo
fuente
Ah, bueno: para mí esto es todo lo contrario (todos deberían heredar el mismo camino, punto), pero supongo que así es como es.
Joseph Wright
Puede usar visudo(necesita permisos de root) para editar la configuración de ruta segura. Esta no es una práctica recomendada. Es solo aquí para la educación.
Elliot Labs LLC
2

sudo -isimulará un inicio de sesión (de manera similar a sudo su -) y, por lo tanto, le dará estas variables de entorno.

Phaphink
fuente
1
No funciona de esa manera. Al menos PATH se restablece en mi Ubuntu Trusty test-vm.
Martijn Heemels