Básicamente necesito hacer esto:
DUMMY=dummy
sudo su - ec2-user -c 'echo $DUMMY'
Esto no funciona ¿Cómo puedo pasar la variable env $ DUMMY a su? -p no funciona con -l.
linux
sudo
environment-variables
su
Umang
fuente
fuente

sudo -iu ec2-user echo $DUMMY?Respuestas:
Puede hacerlo sin llamar al shell de inicio de sesión:
o:
La
-popción desucomando preservar variables de entorno.fuente
-pes una opciónsu, nosudoen este caso-mconserva la variable, otros dicen-c¿cuál es la diferencia? Y uno de los comentarios en estos días de respuesta-Estackoverflow.com/questions/10488758/…Consejo profesional: nunca hay una buena razón para correr
sudo su. Para ejecutar un comando como un usuario diferente, usesudo -u username command. Si quieres un shell raíz, ejecutasudo -iosudo -l. Si ha activado la cuenta raíz, también puede ejecutarlosusolo, perosudo susimplemente no es útil. Y sí, sé que lo ves en todas partes.Dicho esto,
sudotiene el-Einterruptor que preservará el entorno de la sesión del usuario:Por lo tanto, primero deberá exportar su variable y luego ejecutar
sudo -E:El
bash -cno es necesario. Sin embargo, si ejecutosudo -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:fuente
env_keepensudoers. Tal vez desea:Defaults env_keep += "DUMMY".sudo. También es más engorroso para una sola variable. Eso solo es útil para algo que siempre debe exportarse.LD_PRELOADy trasladarLESSCHARDEF. No creo que la conveniencia sea el argumento ganador aquí ...-E hace el trabajo por mí. Del hombre
sudo-fuente
Lo que sigue es una solución que no necesita una para cambiar la política de seguridad.
Ignoraré la
suparte, ya que podemos usar la--useropción desudo.Queremos pasar variables de entorno a una
commandejecución víasudo. Sin embargosudo, no permitirá que las variables de entorno se pasen a un comando (existen razones de seguridad válidas para esto, algunas variables pueden ser peligrosas). Un shell se puede usar para establecer variables de entorno ysudopuede ejecutar un shell con un script que se le pasa. Por lo tanto, indiquesudoque ejecute un script que establezca las variables de entorno.fuente