web-dev-qa-db-fra.com

Pourquoi les utilisateurs ne devraient-ils jamais utiliser Sudo pour lancer des applications graphiques?

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.

112
Nur

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: HOMEvariable 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 .Xauthorityroot-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.

127
Eliah Kagan

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"?

25
carnendil

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:

nautilus admin.gif


gedit en tant que root n'autorise pas les préférences

Lorsque 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?

  • Appelez en utilisant sgedit filename1 filename2 ...
  • Obtient les paramètres gedit de l'utilisateur pour les tabulations, les polices, le retour à la ligne, etc.
  • Élève à Sudo -H pour préserver la propriété du fichier tout en obtenant les pouvoirs de la racine.
  • Demande le mot de passe si le dernier Sudo a expiré.
  • Obtient les paramètres gedit de Sudo
  • Compare les différences entre les paramètres utilisateur et sudo gedit
  • Exécute les paramètres définis uniquement sur les différences (réduit le nombre de commandes à une douzaine ou moins. La prochaine fois, il exécutera peut-être une ou deux modifications, mais souvent aucune modification.
  • Appelle gedit en tant que tâche en arrière-plan, de sorte que l'invite du terminal réapparaisse immédiatement.
5
WinEunuuchs2Unix