Les applications graphiques stockent souvent les paramètres et autres données propres à l'utilisateur dans des fichiers de configuration écrits dans le dossier de base de l'utilisateur . Le mécanisme principal utilisé par les applications pour déterminer ce qu'elles doivent utiliser comme dossier de base de l'utilisateur est la variable d'environnement HOME
. (Vous pouvez le vérifier vous-même avec echo $HOME
).
Supposons que vous utilisiez gedit
(un éditeur de texte graphique) comme root
. Si vous exécutez sudo gedit
, HOME
continuera de pointer vers votre répertoire de base , même si le programme exécute en tant que root
. En conséquence, gedit
écrira les fichiers de configuration sous la forme root
dans votre répertoire de base. Ce aura parfois comme conséquence la les fichiers de configuration étant détenus par root
et donc (lorsque vous exécuterez ultérieurement le programme en tant que vous-même et non en tant que root
). Cela se produit principalement lorsque l'application doit créer un nouveau fichier de configuration. Les fichiers nouvellement créés, par défaut, appartiennent à l'utilisateur qui les crée ( root
dans ce cas, pas vous).
C’est la principale raison pour laquelle vous devriez exécuter des applications graphiques avec une interface graphique sudo
plutôt que directement avec sudo
. Dans Ubuntu et la plupart de ses dérivés (y compris Xubuntu et Lubuntu), l’interface graphique standard est gksu
/ gksudo
. . Dans Kubuntu, il s'agit de kdesudo
. (Cela dépend de de l'environnement de bureau utilisé.)
Si vous souhaitez utiliser sudo
directement pour exécuter une application graphique telle que gedit
, vous pouvez exécuter:
sudo -H gedit
Le drapeau -H
permet à sudo
de définir HOME
de manière à pointer vers le dossier de départ de root
( /root
).
Cela ne gère toujours pas automatiquement la propriété de .Xauthority
en le copiant dans un emplacement temporaire. dossier (c’est l’autre chose que sudo
frontends prend en charge pour vous). Mais dans le cas peu fréquent où .Xauthority
est inaccessible, vous obtiendrez une erreur indiquant que c'est le cas et vous pourrez alors résoudre le problème en le supprimant ( sudo rm ~/.Xauthority
), car il est automatiquement régénéré. Ainsi, protéger la propriété et les autorisations de .Xauthority
est moins important que de protéger la propriété et les autorisations des fichiers de configuration.
Contrairement au root
appartenant à .Xauthority
, lorsque le fichier de configuration devient la propriété de root
, le problème n'est pas toujours aussi évident (car les programmes graphiques s'exécutent souvent, mais ne fonctionnent pas très bien, et afficher toutes les erreurs utiles sur la console). Et il est parfois plus fastidieux de résoudre ce problème, en particulier si vous souhaitez qu'un ou plusieurs fichiers de votre répertoire personnel appartiennent à une autre personne que vous (car vous ne pouvez pas le réparer). simplement en récursivement chown
tous vos fichiers à vous-même).
Par conséquent, sudo
(au moins sans -H
) ne devrait pas être utilisé pour exécuter une application graphique à moins que ne connaisse parfaitement le fonctionnement interne de l'application et ne sache pas avec certitude que ce n'est pas le cas. jamais tenté d’écrire des fichiers de configuration.