Tengo dos usuarios llamados Alice y Sally en mi sistema Ubuntu 22.04. Alice ha configurado sus variables de entorno en el archivo .profile y funcionan correctamente para ella. Sin embargo, cuando Alice cambia al usuario Sally usando el comando sudo -s -u sally, la configuración del entorno del .profile de Alice no se refleja para Sally.
alice@dev7 192 0 % echo $appuser
alice
alice@dev7 193 0 % env | grep appuser
appuser=alice
alice@dev7 194 0 % sudo -s -u sally
sally@dev7 196 0 % echo $appuser
sally@dev7 197 0 %
He verificado que el archivo .profile esté presente en el directorio de inicio de Sally y tenga la configuración necesaria. Me gustaría entender por qué las variables de entorno no se aplican a Sally cuando Alice cambia a su usuario usando sudo -s -u sally. ¿Se requieren pasos o configuraciones adicionales para garantizar que la configuración del entorno se mantenga al cambiar de usuario de esta manera?
Respuesta1
~/.profile
se obtiene al iniciar sesión el usuario... Por lo tanto, sudo -u user
debe usar para -i, --login
"ejecutar el shell especificado por la entrada de la base de datos de contraseñas del usuario de destino como un shell de inicio de sesión" de esta manera:
sudo -i -u sally
Aviso: No puede especificar ambas opciones -i
y -s
.
Sin embargo, si desea conservar la elección de shell de sus usuarios actuales, puede usarlo sudo su ...
así:
sudo su - sally --shell "$SHELL"
o especifique su elección de shell, por ejemplo, /bin/bash
así:
sudo su - sally --shell /bin/bash
independientemente del shell especificado por la entrada de la base de datos de contraseñas del usuario de destino.