J'ai lu la documentation "RootSudo" de la communauté et cette ligne m'intéresse:
Vous devriez ne jamais utiliser Sudo pour démarrer des applications graphiques en tant que racine.
Pourquoi? Quelle est la différence? Veuillez fournir une explication simple car je ne suis qu'un utilisateur de bureau normal.
Les applications graphiques stockent souvent les paramètres et autres données spécifiques à l'utilisateur dans des fichiers de configuration écrits dans le dossier de l'utilisateur home folder . Le mécanisme principal utilisé par les applications pour déterminer ce qu'elles doivent utiliser comme dossier de base de l'utilisateur est le suivant: 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 de pointer vers votre répertoire de base , même si le programme est exécuté sous le nom root
. Par conséquent, gedit
écrira les fichiers de configuration sous la forme root
dans votre répertoire personnel. Ceci entraînera parfois dans les fichiers de configuration étant possédé par root
et ainsi inaccessible pour vous (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 (qui dans ce cas est root
et non vous).
C'est la raison principale pour laquelle vous devriez exécuter des applications graphiques avec une interface graphique Sudo
plutôt qu'avec une simple 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 est kdesudo
. (Cela dépend du environnement de bureau utilisé.)
Si vous voulez utiliser Sudo
directement pour exécuter une application graphique telle que gedit
, vous pouvez exécuter:
Sudo -H gedit
L’indicateur -H
permet à Sudo
de définir HOME
afin qu’il pointe vers le dossier personnel de root
(qui est /root
).
Cela ne gèrera toujours pas automatiquement la propriété de .Xauthority
en le copiant dans un dossier temporaire (ceci est l'autre chose que les interfaces graphiques Sudo
prennent en charge pour vous). Toutefois, 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é. Par conséquent, la protection de la propriété et des autorisations de .Xauthority
est moins importante que la protection de la propriété et des autorisations des fichiers de configuration.
Contrairement au .Xauthority
root
-possédé, lorsque le fichier root
appartient aux fichiers de configuration, 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 génèrent toute erreur utile sur la console). Et il est parfois plus fastidieux de résoudre ce problème, surtout si vous souhaitez qu'un ou plusieurs fichiers de votre répertoire personnel soient détenus par quelqu'un d'autre que vous (car alors ne pouvez pas le réparer simplement en récursivement chown
tous vos fichiers à vous-même).
Par conséquent, Sudo
(du moins sans -H
) ne doit pas être utilisé pour exécuter une application graphique à moins que ne connaisse parfaitement le fonctionnement interne de l'application et ne sache pas qu'elle ne tente jamais d'écrire. tous les fichiers de configuration.
Tout simplement:
Cela évite que les fichiers de votre répertoire personnel ne deviennent la propriété de root.
Lisez-le ici . Aussi, éventuellement, une copie de Quelle est la différence entre "gksudo nautilus" et "Sudo nautilus"?
Une alternative à gksu nautilus
et gksu gedit
consiste à utiliser le complément nautilus-admin
. Il vous permet de parcourir les fichiers et les répertoires avec Nautilus , puis de les ouvrir en tant que root (administrateur).
L'installation est simple:
Sudo apt install nautilus-admin
Maintenant, lorsque vous êtes dans Nautilus, vous aurez une option supplémentaire pour Éditer en tant qu'administrateur:
gedit
en tant que root n'autorise pas les préférencesLorsque vous exécutez gedit
en tant que root, vous ne pouvez pas utiliser les préférences que vous avez définies en tant qu'utilisateur standard pour les tabulations, les convertir en espaces, le nom de la police, la taille de la police, le retour à la ligne, etc.
Pour résoudre ce problème, j'ai écrit le script sgedit
pour hériter des préférences de l'utilisateur et les appliquer à la racine: Comment synchroniser mon gedit avec les préférences de mon utilisateur?
sgedit filename1 filename2 ...
Sudo -H
pour préserver la propriété du fichier tout en obtenant les pouvoirs de la racine.Sudo
a expiré.gedit
en tant que tâche en arrière-plan, de sorte que l'invite du terminal réapparaisse immédiatement.