Parece que cuando sudo
ing abajo que el uso sudo -u $user
que se sigue utilizando el entorno de la raíz. ¿Cómo puedo hacer sudo
uso 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 => user
sudo -u user
es análogo asu user
cambiar el entorno en su que tienes que usarsu - user
-u
usar 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 $user
fuente
/etc/passwd
:( pero supongo que sí ...-E
es la que preserva el medio ambiente, es decir, todas las variables de entorno, etc. están allí, aunque todavía no se ponePATH
yLD_LIBRARY_PATH
al usuario de la llamada.$SUDO_USER
se puede usarman sudoers
en Debian menciona otra posibilidad. No estoy seguro de qué dirección quiere, pero su pregunta parece que le gustaría tener laenv_reset
opción/etc/sudoers
: lo opuesto es básicamente laenv_keep
lista. Para establecer lo correctoHOME
, puede usar la-H
opciónsudo
directamente o, nuevamentesudoers
, con laalways_set_home
opción.Alternativamente, puede usar
env_file
para especificar un entorno exacto que desea pasar. Sin embargo, creo que es mejor si revisa lasenv_*
opciones desdeman sudoers
, porque lo/etc/sudoers
controla todo y ese es el punto al que recurrir.Aquí hay parte del contexto en el que uso
env_reset
dentro de misudoers
archivo:fuente
Al sudar las variables de entorno no se conservan.
En mi caso, uso el documento aquí .
Pones tus acciones como
my_script.sh
dentro de tu DOCUMENTO AQUÍ:No debe colocar variables directamente aquí, ya que serían interpretadas por su usuario actual.
Si
$MY_VAR
no 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_VAR
tendrá unsome_user
valor contextual.fuente
su - some_user
lugar desu -u some_user
.