GNU/Linux >> Tutoriales Linux >  >> Linux

cómo pasar la variable de entorno a sudo su

Consejo profesional:nunca hay una buena razón para ejecutar sudo su . Para ejecutar un comando como un usuario diferente, use sudo -u username command . Si desea un shell raíz, ejecute sudo -i o sudo -l . Si ha activado la cuenta raíz, también puede ejecutar su solo, pero sudo su simplemente no es útil. Y sí, sé que lo ves en todas partes.

Dicho esto, sudo tiene el -E interruptor que preservará el entorno de la sesión del usuario:

 -E, --preserve-env
        Indicates to the security policy that the user wishes to preserve 
        their existing environment variables.  The security policy may
        return an error if the user does not have permission to 
        preserve the environment.

Por lo tanto, primero deberá exportar su variable y luego ejecutar sudo -E :

$ export DUMMY=dummy
$ sudo -Eu bob bash -c 'echo $DUMMY'
dummy

El bash -c no es necesario. Sin embargo, si ejecuto sudo -Eu bob echo "$DUMMY" , la variable se expande antes de que se inicie el shell raíz, por lo que no demuestra que el comando realmente funcione:

$ sudo -u bob echo $DUMMY  ## looks like it works but doesn't
dummy
$ sudo -u bob bash -c 'echo D:$DUMMY' ## now we see it failed
D:
$ sudo -Eu bob bash -c 'echo D:$DUMMY'  ## works as expected
D:dummy

Puede hacerlo sin llamar al shell de inicio de sesión:

sudo DUMMY=dummy su ec2-user -c 'echo "$DUMMY"'

o:

sudo DUMMY=dummy su -p - ec2-user -c 'echo "$DUMMY"'

El -p opción de su comando preservar variables de entorno.


-E hace el trabajo por mí. Del hombre sudo -

-E , --preserve-env
Indica a la política de seguridad que el usuario desea conservar sus variables de entorno existentes. La política de seguridad puede devolver un error si el usuario no tiene permiso para preservar el medio ambiente.


Linux
  1. ¿Cómo ejecutamos un comando almacenado en una variable?

  2. ¿Cómo hacer retroactivamente que un script se ejecute como raíz?

  3. ¿Cómo ejecutar Terminal como raíz?

  4. Cómo pasar variables de entorno a contenedores Docker

  5. ¿Cómo cambiar el idioma de mi git?

Cómo configurar/desconfigurar variables de entorno en Linux

Cómo ejecutar comandos Sudo sin contraseña

Cómo establecer la variable de entorno en Bash

Cómo ejecutar un alias con Sudo en Linux

Cómo ejecutar comandos sudo sin contraseña

Cómo ejecutar una auditoría de seguridad en AlmaLinux con Lynis