Parece que cuando sudoing abajo que el uso sudo -u $userque se sigue utilizando el entorno de la raíz. ¿Cómo puedo hacer sudouso del entorno de los usuarios? Como nota especial, no todos los usuarios en los que usaré esto tienen shells de inicio de sesión.
19

# whoami => root # sudo -u user whoami => usersudo -u useres análogo asu usercambiar el entorno en su que tienes que usarsu - user-uusar shell ... Creo que también ignora los grupos ... Intenté algo desde la raíz (usando sudo -u down) y funcionó, aparentemente no lo hizo para el usuario. .. así que tengo que asegurarme de que estoy ejecutando comandos de una manera que tenga todas las limitaciones y problemas ambientales.Respuestas:
Tratar
sudo -i -u $userfuente
/etc/passwd:( pero supongo que sí ...-Ees la que preserva el medio ambiente, es decir, todas las variables de entorno, etc. están allí, aunque todavía no se ponePATHyLD_LIBRARY_PATHal usuario de la llamada.$SUDO_USERse puede usarman sudoersen Debian menciona otra posibilidad. No estoy seguro de qué dirección quiere, pero su pregunta parece que le gustaría tener laenv_resetopción/etc/sudoers: lo opuesto es básicamente laenv_keeplista. Para establecer lo correctoHOME, puede usar la-Hopciónsudodirectamente o, nuevamentesudoers, con laalways_set_homeopción.Alternativamente, puede usar
env_filepara especificar un entorno exacto que desea pasar. Sin embargo, creo que es mejor si revisa lasenv_*opciones desdeman sudoers, porque lo/etc/sudoerscontrola todo y ese es el punto al que recurrir.Aquí hay parte del contexto en el que uso
env_resetdentro de misudoersarchivo:fuente
Al sudar las variables de entorno no se conservan.
En mi caso, uso el documento aquí .
Pones tus acciones como
my_script.shdentro de tu DOCUMENTO AQUÍ:No debe colocar variables directamente aquí, ya que serían interpretadas por su usuario actual.
Si
$MY_VARno está configurado para el usuario que ejecuta el script, no se configurará.Su variable debe ser llamada dentro de sus scripts, o debe escapar de ellos con
\.P.ej.
Aquí,
$MY_VARtendrá unsome_uservalor contextual.fuente
su - some_userlugar desu -u some_user.