Tanto Debian como Ubuntu envían un /etc/sudoers
archivo que contiene Defaults env_reset
, que restablece las variables de entorno.
Sin embargo, el comportamiento de env_reset
cambió de no tocar $ HOME a restablecerlo a la página de inicio del usuario objetivo.
Ubuntu decidió parchear su versión sudo
para mantener el comportamiento anterior:
https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/760140
En Ubuntu, para restablecer la variable de entorno $ HOME al usuario objetivo, uno tiene que configurar uno Defaults always_set_home
o Defaults set_home
(en cuyo caso solo sudo -s
se actualizará HOME) en su /etc/sudoers
.
Este error en el rastreador de Ubuntu tiene más razones para no configurar $ HOME en sudo:
https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/1373495
Ver comentario # 4:
Si se elimina HOME, por ejemplo, vim, bash, etc., usará /root/.vimrc, /root/.bashrc, etc. en lugar de ~ / .vimrc, ~ / .bashrc, etc. del usuario. Aunque es una mala idea para ejecutar clientes X a través de sudo, es probable que también busquen archivos de configuración en las ubicaciones incorrectas, y existe la posibilidad de que los clientes X11 ni siquiera puedan conectarse al servidor X11 si están dirigidos al archivo .Xauthority incorrecto.
Es una decisión consciente de los desarrolladores de Ubuntu.
Esta respuesta tiene más detalles sobre las opciones de sudoers como always_set_home
:
https://unix.stackexchange.com/a/91572/281844
Hay un segundo problema en su pregunta, que es el sudo echo $HOME
que todavía muestra la casa del usuario incluso en Debian.
Eso sucede porque el shell se está expandiendo $HOME
antes de ejecutar el sudo
comando.
Así que esto:
$ sudo echo $HOME
Primero se expande por el shell en:
$ sudo echo /home/user
Y luego sudo se ejecuta echo /home/user
como root ...
Esto también debería demostrar la diferencia:
$ sudo bash -c 'echo $HOME'
/root
O obtenga un shell raíz completo y vea la variable de entorno allí:
$ sudo -s
# echo $HOME
/root