Quelle est la différence entre sudo
y gksudo
?
Réponses
Trop de publicités?gksudo
est un frontal basé sur GTK pour sudo
(BTW, kdesudo
est un frontal basé sur Qt), cependant il gère (par défaut) plus de variables environnementales( HOME
, XAUTHORITY
etc.) que sudo
ce qui rend l'exécution de commandes en tant que root plus sûre.
Pour autant que je puisse voir, seule la réponse de @Logics est suffisamment correcte (celle de @Ignacio Vazquez-Abrams n'est pas complète). Voici la clarification que j'essaie d'éviter aux réponses/commentaires de @Davros @knitti (merci de les supprimer/éditer quand ce n'est pas nécessaire) :
- Bien que les deux commandes représentent effectivement
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 devriez utiliser gk/kdesudo. Vous devriez 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 la fonction
HOME
vers laquelle pointe la variable d'environnementsudo
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 commandement n'est pas le point clé. - Vous peut encore utiliser
sudo
pour lancer des applications graphiques en tant que super-utilisateur (par exemple, pour afficher la sortie de la console des applications).HOME
(et d'autres commeXAUTHORITY
,DISPLAY
) correctement pour que l'application lancée n'échoue pas, ne perde pas sa fonctionnalité ou ne fasse pas de choses vraiment mauvaises. Voici ce que je recommande actuellement pour l'utilisation desudo
-
sudo -H <rest of the command>
- (de
sudo
section 8 page de manuel) Le-H ( HOME )
L'option demande à la politique de sécurité de définir l'optionHOME
vers le répertoire personnel de l'utilisateur cible (root par défaut) tel que spécifié par la base de données des mots de passe. Selon la politique, cela peut être le comportement par défaut. - Cela devrait au moins empêcher la création de fichiers dans
sudo
le répertoire personnel de l'appelant
- (de
-
sudo -H DISPLAY=<a working X display name, usually :0> <rest of a GUI program command>
- Cela devrait permettre au <programme GUI> d'être exécuté dans un terminal TTY et affiché dans votre environnement de bureau.
-
- Le comportement de la
sudo
commande n'est pas identique sur tous les systèmes et peut être configuré par le biais devisudo
veuillez consulter le sitesudoers(5)
pour plus d'informations.
L'utilisation du sudo normal pour exécuter des programmes graphiques peut, en de rares occasions, perturber les permissions sur certains fichiers. Pour être sûr, gksudo (ou kdesudo selon le cas) devrait être utilisé pour exécuter des programmes avec une interface graphique. Je pense que c'est vraiment un bogue, bien que j'aie entendu des explications selon lesquelles gksudo comprend les variables du serveur X et sudo ne le fait pas, ce qui peut entraîner des problèmes. Juste un conseil ; si vous exécutez des programmes graphiques en tant que root, au lieu d'ouvrir un terminal pour chaque programme que vous voulez 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 programme remplacé par l'application que vous voulez exécuter.
Sudo s'exécute en tant qu'utilisateur actuel avec des privilèges élevés. Ceci a le potentiel de changer les permissions de certains fichiers de configuration de l'utilisateur (relatifs à votre environnement graphique) lors de l'exécution d'applications graphiques. Des erreurs peuvent se produire lorsque vous exécutez à nouveau ces applications sans sudo.
gksudo (kdesudo sous KDE) exécute les applications en tant qu'utilisateur root, donc toutes les permissions de fichiers touchées sont sur les fichiers de root, pas sur les fichiers des utilisateurs. relancer ces applications sans gksudo/kdesudo aura toujours le comportement attendu.
La réponse actuelle est incorrecte. Selon le Ubuntu RootSudo wiki :
"Vous ne devez jamais utiliser sudo normal pour lancer 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 empêche les fichiers de votre répertoire personnel d'être la propriété de root. (AFAICT, c'est tout ce qui est spécial à propos de l'environnement du processus démarré avec gksudo par rapport à sudo). "