sudo vs gksudo. différence?

37

Quelle est la différence entre sudoet gksudo?

oneat
la source
1
Bonne question. J'apprends Linux maintenant (vous pouvez voir que je n'ai pas encore trouvé la disposition de mon clavier) Haha!
r0ca

Réponses:

27

sudodemande le mot de passe sur la ligne de commande et gksudoaffiche une boîte de dialogue à cet effet.

Ignacio Vazquez-Abrams
la source
6
gksu (do) a également sa propre configuration des variables d’environnement à transmettre à l’enfant, distincte de celle de su (do). Par exemple, si votre configuration sudoers spécifie! Keep_env, l'absence de $ DISPLAY peut empêcher l'exécution d'applications graphiques, mais gksudo devrait fonctionner. Vous pouvez trouver certains détails sur git.debian.org/?p=users/kov/gksu-polkit.git;a=blob;f=common/… ou live.gnome.org/gksu .
éphémient
@ ephemient Donc, à côté de l'invite graphique, est sudo -Eéquivalent à gksudo?
isomorphismes
3
La réponse ci-dessous semble de loin supérieure. superuser.com/a/726249/112542
johny pourquoi
4
Je tiens à souligner que ce n'est pas la différence cruciale du tout, et cette réponse est assez trompeuse pour les débutants. La différence majeure est expliquée ici: askubuntu.com/a/11766/81034 et la réponse ci-dessous (que @johnywhy est liée à) va au-delà pour ajouter une nuance à cela. Veuillez lire la question askubuntu plutôt que de vous fier à cette réponse trompeuse.
dimanche - Réintégrer Monica le
31

gksudoest un frontend basé sur GTK-de sudo(BTW, kdesudopoignées est un frontend basé sur Qt), mais il (par défaut) plus de variables environnementales ( HOME, XAUTHORITY, etc.) que sudoce qui rend les commandes en cours d' exécution comme plus sûre racine.


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 soient bien représentées sudo, l'interface utilisateur utilisée n'est PAS la seule différence entre les deux commandes.
  2. L’exécution du programme GUI n’est PAS la seule situation dans laquelle vous devriez utiliser gk / kdesudo, mais vous devez utiliser gk / kdesudo lorsque vous ne pouvez pas déterminer si la commande créera / écrit des fichiers dans votre répertoire de base (vers lequel la HOMEvariable d’environnement pointe sudocommande dans certains systèmes et situations). Toutes les applications à interface graphique n'écrivent pas dans votre répertoire personnel, pas plus que les applications CLI . Le type de commande n'est donc pas l'élément clé.
  3. Vous pouvez toujours utiliser la sudocommande pour lancer les applications de l'interface graphique en tant qu'utilisateur root (pour afficher la sortie de la console de ces applications, par exemple). Toutefois, vous devez gérer correctement HOME(et d'autres, telles que XAUTHORITY, DISPLAYles paramètres de méthode de saisie, etc.) afin que l'application lancée ne va pas échouer, perdre des fonctionnalités ou faire des choses vraiment mauvaises. Ce qui suit est ma recommandation actuelle pour utilisersudo
    • sudo -H <rest of the command>
      • (à partir de sudola page de manuel de la section 8) L' -H ( HOME )option demande à la stratégie de sécurité de définir la HOMEvariable d'environnement sur le répertoire de base de l'utilisateur cible (racine 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 sudole répertoire de base de l'appelant
    • sudo -H DISPLAY=<a working X display name, usually :0> <rest of a GUI program command>
      • Cela devrait laisser <programme graphique> exécuté dans un terminal TTY et affiché dans votre environnement de bureau.
  4. Le comportement de la sudocommande n'est pas identique sur tous les systèmes et peut être configuré via visudocommande. Veuillez consulter la sudoers(5)page de manuel pour plus d'informations.
Vdragon
la source
2
semble une explication bien meilleure que celle qui obtient tous les votes. plus complet, plus correct. même le PO a répondu "est-ce tout?" à la réponse qui a obtenu tous les votes.
johny pourquoi
2

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 indiquant que gksudo comprend les variables du serveur X et que sudo n’entraîne pas de problèmes. 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.

Davros
la source
2

sudo est exécuté 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.

Les logiques
la source
0

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

"Vous ne devez jamais utiliser sudo normal 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 .Xauthority dans un répertoire tmp. Cela évite les fichiers de votre maison. répertoire devenant la propriété de root. (AFAICT, c’est tout ce qui est spécial dans l’environnement du processus démarré avec gksudo vs. sudo). "

eugene1832
la source
2
Il y a quatre autres réponses; lequel est incorrect? Votre réponse n’est-elle pas essentiellement la même que celle de Davros?
Fix1234
Je faisais référence à la réponse marquée comme correcte. Oui, Davros dit la même chose, mais j'ai ajouté ceci parce que le sien ne contenait pas de lien vers une source.
eugene1832
1
Une meilleure solution serait de proposer une modification de cette réponse. L'amélioration d'une réponse est susceptible d'être acceptée (+2 répétition), alors qu'une duplication d'une réponse est susceptible d'attirer un vote négatif.
fix1234