Les applications graphiques stockent souvent des paramètres et d'autres données spécifiques à l'utilisateur dans des fichiers de configuration écrits dans le dossier personnel de l'utilisateur . Le principal mécanisme utilisé par les applications pour déterminer ce qu’elles doivent utiliser comme dossier de base de l’utilisateur est la HOME
variable d’environnement . (Vous pouvez l'inspecter vous-même avec echo $HOME
).
Supposons que vous exécutiez gedit
(un éditeur de texte graphique) en tant que root
. Si vous exécutez sudo gedit
, HOME
continuera à pointer vers votre répertoire de base, même si le programme est exécuté en tant queroot
. Par conséquent, gedit
écrira les fichiers de configuration commeroot
dans votre répertoire personnel. Cela va parfois entraîner dans les fichiers de configuration étant propriété parroot
et donc inaccessibles pour vous (lorsque vous exécutez le programme plus tard comme toi - même et non pas 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 (c'est-à-dire root
, ce n'est pas vous).
C'est la raison principale pour laquelle vous devriez exécuter des applications graphiques avec une interface graphique sudo
plutôt qu'avec straight sudo
. Dans Ubuntu et la plupart de ses dérivés (y compris Xubuntu et Lubuntu), l’interface graphique standard est gksu
/gksudo
. À Kubuntu c'est kdesudo
. (Cela dépend de l' environnement de bureau utilisé.)
Si vous souhaitez utiliser sudo
directement pour exécuter une application graphique comme gedit
, vous pouvez exécuter:
sudo -H gedit
L' -H
indicateur fait en sudo
sorte HOME
de pointer vers root
le dossier de départ de (qui est /root
).
Cela ne gèrera toujours pas automatiquement la propriété de celui-ci .Xauthority
en le copiant dans un dossier temporaire (ceci est l’autre chose que les interfaces graphiques sudo
gèrent pour vous). Mais dans l'événement peu fréquent qui .Xauthority
est inaccessible, vous obtiendrez une erreur et vous pourrez alors résoudre le problème en le supprimant ( sudo rm ~/.Xauthority
), car il est automatiquement régénéré. Par conséquent, protéger .Xauthority
la propriété et les autorisations est moins important que protéger la propriété et les autorisations des fichiers de configuration.
Contrairement à une root
détenue .Xauthority
, lorsque les fichiers de configuration sont la propriété que root
, ce n'est pas toujours aussi évident que le problème est (parce que les programmes graphiques fonctionneront souvent, mais pas très bien, et la sortie des erreurs utiles à 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 à quelqu'un d'autre que vous (car vous ne pouvez pas le résoudre simplement en récursant chown
tous vos fichiers). retour à vous-même).
Par conséquent, sudo
(du moins sans -H
) ne doit pas être utilisé pour exécuter une application graphique, sauf si vous êtes parfaitement familiarisé avec le fonctionnement interne de l' application et si vous savez avec certitude qu'il ne tente jamais d'écrire des fichiers de configuration.