gksudo
est une interface basée sur GTK de sudo
(Au fait, kdesudo
est une interface basée sur Qt), mais il gère (par défaut) plus de variables d'environnement (HOME
, XAUTHORITY
, etc.) que sudo
rendant ainsi les commandes en cours d'exécution en tant que root plus sûres.
Autant que je sache, seule la réponse de @Logics est suffisamment correcte (celle de @Ignacio Vazquez-Abrams n'est pas complète). Voici la clarification à éviter pour @Davros @knitti réponse/commentaires (veuillez les supprimer/modifier quand ce n'est pas nécessaire) :
- 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. - L'exécution d'un programme GUI n'est PAS la seule situation dans laquelle vous devez utiliser gk/kdesudo, vous devez plutôt utiliser gk/kdesudo chaque fois que vous ne pouvez pas déterminer si la commande créera/écrira des fichiers dans votre répertoire personnel (ce que le
HOME
la variable d'environnement pointe vers dans lesudo
commande 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 , donc le type de commande n'est pas le point clé. - Vous pouvez toujours utilisez
sudo
commande pour lancer les applications GUI en tant que root (pour afficher la sortie de la console des applications à titre d'exemple), mais vous devez gérerHOME
(et d'autres commeXAUTHORITY
,DISPLAY
, input-method-related-stuff, etc.) correctement les variables d'environnement afin que l'application lancée n'échoue pas, ne perde pas de fonctionnalités ou ne fasse pas de très mauvaises choses. Voici ma recommandation actuelle pour l'utilisation desudo
sudo -H <rest of the command>
- (à partir de
sudo
section 8 page de manuel) Le-H ( HOME )
l'option demande que la politique de sécurité définisse leHOME
variable d'environnement dans le répertoire personnel de l'utilisateur cible (racine par défaut) tel que spécifié par la base de données de mots de passe. Selon la règle, il peut s'agir du comportement par défaut. - Cela devrait au moins empêcher la création de fichiers en
sudo
répertoire personnel de l'appelant
- (à partir de
sudo -H DISPLAY=<a working X display name, usually :0> <rest of a GUI program command>
- Cela devrait permettre au
d'être exécuté dans un terminal TTY et affiché dans votre environnement de bureau
- Cela devrait permettre au
- Le comportement du
sudo
la commande n'est pas identique sur tous les systèmes et peut être configuré viavisudo
commande, veuillez vérifiersudoers(5)
page de manuel pour plus d'informations.
sudo
demande le mot de passe sur la ligne de commande, et gksudo
affiche une boîte de dialogue pour cela.
L'utilisation régulière de sudo pour exécuter des programmes graphiques perturbera en de rares occasions les autorisations sur 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 sudo ne peut pas entraîner de problèmes. Juste comme un pourboire; 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 (alt et touche de fonction 2 en même temps), puis tapez dans la boîte de dialogue qui apparaît "gksudo programme" sans les guillemets et le programme remplacé par l'application que vous souhaitez exécuter.