web-dev-qa-db-fra.com

sudo vs gksudo. différence?

Quelle est la différence entre Sudo et gksudo?

36
oneat

Sudo demande le mot de passe sur la ligne de commande et gksudo fait apparaître une boîte de dialogue.

27

gksudo est une interface GTK de Sudo (BTW, kdesudo est une interface Qt), mais elle gère (par défaut) plus de variables d'environnement (HOME, XAUTHORITY, etc.) que Sudo, ce qui rend les commandes en cours d'exécution plus sûres.


Autant que je sache, seule la réponse de @Logics est correcte (la réponse de @ Ignacio Vazquez-Abrams n’est pas complète). Essayez d'éclaircir la réponse à @Davros @knitti (merci de bien vouloir les supprimer/les modifier si vous n'en avez pas besoin):

  1. Bien que les deux commandes représentent bien Sudo, l'interface utilisateur utilisée N'EST PAS la seule différence entre les deux commandes.
  2. L'exécution du programme d'interface graphique n'est PAS la seule situation dans laquelle vous devriez utiliser gk/kdesudo. Vous devez plutôt utiliser gk/kdesudo lorsque vous ne pouvez pas déterminer si la commande créera/écrit des fichiers dans votre répertoire personnel (vers lequel pointe la variable d'environnement HOME. la commande Sudo dans certains systèmes et situations). Toutes les applications GUI n'écrivent pas dans votre répertoire personnel et toutes les applications CLI ne le font pas . Le type de commande n'est donc pas le point clé.
  3. Vous pouvez toujours utiliser la commande Sudo pour lancer les applications de l'interface graphique en tant qu'utilisateur root (pour afficher la sortie de la console des applications sous la forme exemple), vous devez cependant manipuler HOME (et d’autres variables telles que XAUTHORITY, DISPLAY, input-method-related-stuff, etc.) correctement afin que l’application lancée n’échoue pas, ne perde pas de fonctionnalités ou ne fasse vraiment pas de bêtises des trucs. Ce qui suit est ma recommandation actuelle pour utiliser Sudo
    • Sudo -H <rest of the command>
      • (à partir de la page de manuel Sudo section 8) L'option -H ( HOME ) demande à la stratégie de sécurité de définir la variable d'environnement HOME sur le répertoire de base de l'utilisateur cible (root par défaut), comme indiqué par la base de données de mots de passe. Selon la stratégie, il peut s'agir du comportement par défaut.
      • Cela devrait au moins empêcher la création de fichiers dans le répertoire de base de l'appelant Sudo
    • Sudo -H DISPLAY=<a working X display name, usually :0> <rest of a GUI program command>
      • Ceci devrait laisser <programme graphique> exécuté dans un terminal TTY et affiché dans votre environnement de bureau.
  4. Le comportement de la commande Sudo n'est pas identique sur tous les systèmes et peut être configuré via la commande visudo. Veuillez consulter la page de manuel sudoers(5) pour plus d'informations.
31
Vdragon

L'utilisation de Sudo pour exécuter des programmes graphiques occasionnera rarement une erreur sur les autorisations de certains fichiers. Pour être sûr, gksudo (ou kdesudo selon le cas) doit être utilisé pour exécuter des programmes avec une interface graphique. Je pense que c’est vraiment un bogue, même si j’ai entendu des explications selon lesquelles gksudo comprend les variables du serveur X et que Sudo n’entraîne probablement aucun problème. Juste comme un conseil; si vous exécutez des programmes graphiques en tant que root, au lieu d'ouvrir un terminal pour chaque programme que vous souhaitez exécuter, tapez ALT-F2 (les touches alt et function 2 en même temps), puis tapez dans la boîte de dialogue qui s'affiche "gksudo programme "sans les guillemets et le programme remplacé par l'application que vous souhaitez exécuter.

2
Davros

Sudo s'exécute en tant qu'utilisateur actuel avec des privilèges élevés. Cela peut potentiellement modifier les autorisations de fichiers de certains fichiers de configuration utilisateur (liés à votre environnement graphique) lors de l'exécution d'applications graphiques. Vous pouvez trouver des erreurs lors de la réexécution de ces applications sans Sudo.

gksudo (kdesudo sous KDE) exécute les applications en tant qu'utilisateur root. Par conséquent, toutes les autorisations de fichiers concernées concernent les fichiers root, et non les fichiers des utilisateurs. réexécuter ces applications sans utiliser gksudo/kdesudo aura toujours le comportement attendu.

2
Logics

La réponse actuelle est incorrecte. Selon le wiki Ubuntu RootSudo :

"Vous ne devez jamais utiliser Sudo pour démarrer des applications graphiques en tant que root. Vous devez utiliser gksudo (kdesudo sur Kubuntu) pour exécuter de tels programmes. Gksudo définit HOME = ~ root et copie le répertoire .Xauthority dans un répertoire tmp. répertoire devenant la propriété de root. (AFAICT, c’est tout ce qui fait la spécificité de l’environnement du processus démarré avec gksudo vs. Sudo). "

0
eugene1832