La différence entre sudo et gksu est-elle la même que la différence entre sudo -i et sudo -s?

26

La différence entre sudo cmdet est gksu cmd-elle la même que la différence
entre le démarrage d'un shell avec sudo -iet sudo -s?

... ou d' autres termes,
est - sudo cmd le même que sudo -i cmd
et gksu cmdle même que celui sudo -s cmd?

EDIT: Basé sur ce que j'ai lu sur une page de documentation Ubuntu où il est dit:

You should never use normal sudo to start graphical applications as root.  
You should use gksudo (kdesudo on Kubuntu) to run such programs. gksudo sets  
HOME=~root, and copies .Xauthority to a tmp directory. This prevents files  
in your home directory becoming owned by root.  
(AFAICT, this is all that's special about the environment of the started   
 process with gksudo vs. sudo).

Le « AFAICT » doe me donne vraiment pleine confiance qu'il n'y a rien de plus à elle.


(..un attardé MISE À JOUR : J'ai testé son commemnt aujourd'hui (2 mois plus tard) sur:
«Ce fichiers Prévient dans votre répertoire devenir la propriété de root »
Tous les fichiers que j'ai créé via la commande sudo / gksu appartenaient toutes à « racine », et le groupe était " root ".)


J'ai lu des parties du info sudoet j'ai remarqué le -iet -s semble faire la même chose que le problème d' environnement AFAICT ...
mais j'ai rencontré une surcharge .. j'ai donc posé ma question ici.

PS .. Ma question ne concerne pas sudo vs gksu
.. Elle concerne plutôt: gksu est-il le même que sudo -s
.. et sinon, en quoi diffèrent-ils?

Peter.O
la source

Réponses:

16

gksuest fondamentalement une interface graphique pour sudo qui permet d'exécuter une commande graphique sans avoir besoin d'exécuter un émulateur de terminal X et d'utiliser su directement. C'est en fait juste un habillage GTK + pour les commandes de superutilisateur.

Donc, si vous vouliez exécuter un programme basé sur une interface graphique en tant que root, vous l'invoqueriez avec gksu cmd, plutôt que sudo cmd, qui est utilisé pour appeler des programmes de console en tant que root.


la source
1
Je ne sais pas ce que vous pourriez signifier par un graphicalfrontend ... une application GTK fonctionne très bien, qu'elle soit lancée via sudo ou gksu ... mais elle exécute le programme dans un environnement différent ... (je ' Je vais ajouter un peu plus à ma question pour
montrer
2
J'ai enfin compris ce que vous entendez par a graphical frontend. J'utilise toujours le terminal pour exécuter sudo / gksu ... mais dans un esprit de force brute essayant tout ce à quoi je pouvais penser, j'ai essayé de courir sudoet gksuvia Alt + F2 ... Bingo! .. a sudodisparu dans le vide, mais a gksusaisi l'occasion et m'a présenté le (légendaire) graphical forntend... C'est le même dialogue que celui qui apparaît pour Synaptic Package Manager etc ...
Peter.O
PS .. Je viens d'essayer gksu dans un nouveau terminal .. La boîte de dialogue de mot de passe apparaît là aussi ... Je dois l'avoir déjà vue mais associée au mot de passe (uniquement), et non le fait qu'il s'agissait d'une boîte de dialogue GUI de une commande Terminal ... ("Je vois". dit l'aveugle :) ... Merci ...
Peter.O
. suite, stimulé par votre réponse, il semble que cela gksuchange le dossier XAUTHORITY, et sudone le fait pas ... Je ne sais pas de quoi il s'agit, mais cela semble important! ... Cela a résolu mon dilemme ... (détails dans ma réponse ci-dessous)
Peter.O
10

sudo -iréinitialise l'environnement de connexion à l'utilisateur cible ( root , dans ce cas). C'est principalement que la HOMEvariable d'environnement est modifiée, ce qui signifie que l'utilisateur cible ~/.bashrcest chargé.

gksuest, par conséquent, comme sudo -idans ce qui passe $HOMEà l' utilisateur root .

Kees Cook
la source
Merci KC .. Cela commence à avoir du sens pour moi (lentement, lentement) ... mais il semble clair que gksu, en créant une copie de XAUTHORITY, et en travaillant à partir de (?), Place gksu dans une catégorie assez distincte l'une des sudovariantes dont j'ai parlé ... et réalisant que cela a été le Aha! moment pour moi ... Le résultat est: Utilisez gksu pour les applications GUI! .. mais je me retrouve avec une autre question non résolue ... gksu s'applique- t-il uniquement aux applications GTK , ou est-il parfaitement acceptable d'utiliser gksu lors de l'exécution d'une application graphique KDE ?
Peter.O
5

Ce n'est pas vraiment une réponse, mais cela peut être d'un certain intérêt ...
Je commence à avoir une idée de ce qui se passe avec ces commandes su,
mais je n'y suis pas encore tout à fait ... J'utilise gksu. .. C'est plus un voyage de compréhension pour moi ... et je ne veux pas comprendre si gksuc'est valable pour konsoleou kate, ou dois- je utiliser la variante KDE kdesu..

Voici quelques résultats de quelques tests que je viens d'essayer.

From user fred's terminal, launch gnome-terminal

su style   resulting            custom   (ls)   new file
command    prompt               prompt   home   ownership
---------  -------------------- -------  -----  ----------
sudo      .root@DT:~#           fred's   fred   root
gksu       root@DT:/home/fred#  root's   fred   root
sudo -i    root@DT:~#           root's   root   root
sudo -s   .root@DT:~#           fred's   fred   root

Ces résultats ne correspondent pas à la page de documentation d'Ubuntu , où il est indiqué:

 This prevents files in your home directory becoming owned by root

MISE À JOUR: Les envvariables XAUTHORITY pour les terminaux invoqués sudo et gksu sont différentes (comme mentionné sur la page de documentation d'Ubuntu ).

sudo    #### XAUTHORITY=/var/run/gdm/auth-for-fred-RsngLK/database
sudo -i #### XAUTHORITY=/var/run/gdm/auth-for-fred-RsngLK/database
sudo -s #### XAUTHORITY=/var/run/gdm/auth-for-fred-RsngLK/database
gksu    #### XAUTHORITY=/tmp/libgksu-xR2OGn/.Xauthority   

Cela montre que ce gksun'est certainement pas la même que la sudo -scommande à laquelle j'ai fait référence dans la question ... et répond donc à ma question initiale (d'une manière encore obscure) ... et la réponse de Chris m'a certainement fait réfléchir sérieusement sur celle-ci! ... Je veux un café!!

Peter.O
la source
3

sudo est pour les applications en ligne de commande, gksu / gksudo pour les applications graphiques

karthick87
la source
Merci, ma question n'était peut-être pas aussi claire que ma compréhension initiale du problème ... J'essayais principalement de savoir quelle était la différence spécifique qui rendait nécessaire d'avoir les deux commandes .. Il semble que la principale différence réside dans le manière qui gksufonctionne à partir d'une copie temporaire de XAUTHORITY .. Je ne suis pas clair sur les détails de la raison pour laquelle XAUTHORITY doit être traité spécialement, mais c'est une chose majeure qui distingue son comportement desudo
Peter.O