Debian et Ubuntu livrent tous deux un /etc/sudoers
fichier contenant Defaults env_reset
, qui réinitialise les variables d’environnement.
Cependant, le env_reset
fait de ne pas toucher $ HOME a été modifié pour le réinitialiser à la maison de l'utilisateur cible.
Ubuntu a décidé de corriger leur version de sudo
pour conserver le comportement précédent:
https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/760140
Sous Ubuntu, pour réinitialiser la variable d’environnement $ HOME sur l’utilisateur cible, il est nécessaire de définir soit, Defaults always_set_home
soit Defaults set_home
( ou, dans ce cas, seul sudo -s
HOME sera actualisé) dans leur /etc/sudoers
.
Ce bogue chez Ubuntu Tracker a plus de raisons de ne pas définir $ HOME dans sudo:
https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/1373495
Voir le commentaire n ° 4:
Si HOME est supprimé, par exemple, vim, bash, etc., utiliseront /root/.vimrc, /root/.bashrc, etc. plutôt que ~ / .vimrc, ~ / .bashrc, etc. de l'utilisateur bien que ce soit une mauvaise idée pour exécuter des clients X via sudo, ils rechercheraient probablement également les mauvais fichiers de configuration dans les mauvais emplacements. Il est également possible que les clients X11 ne puissent même pas se connecter au serveur X11 s'ils visent le mauvais fichier .Xauthority.
C'est une décision consciente des développeurs Ubuntu.
Cette réponse contient plus de détails sur les options de sudoers telles que always_set_home
:
https://unix.stackexchange.com/a/91572/281844
Votre question comporte un deuxième problème, à savoir celui sudo echo $HOME
qui affiche toujours le domicile de l'utilisateur même dans Debian.
Cela se produit parce que le shell se développe $HOME
avant d' exécuter la sudo
commande.
Donc ça:
$ sudo echo $HOME
Est d'abord développé par la coquille dans:
$ sudo echo /home/user
Et puis sudo s'exécute en echo /home/user
tant que root ...
Cela devrait aussi démontrer la différence:
$ sudo bash -c 'echo $HOME'
/root
Ou obtenez un shell racine complet et voyez la variable d'environnement ici:
$ sudo -s
# echo $HOME
/root