Réponses:
Les deux fichiers pointent au même endroit:
$ ls -l /usr/bin/gksudo
lrwxrwxrwx 1 root root 4 2010-09-27 18:23 /usr/bin/gksudo -> gksu
... gksudoest lié à gksu. Mais cela ne signifie pas qu'ils font les mêmes choses, loin de là.
Les applications peuvent détecter la commande utilisée pour l'exécuter. Cela se fait généralement argv[0]dans les langages de style C ou $0dans les scripts shell Bourne. L'application peut regarder cela et dans ce cas, en fait, cela change son fonctionnement. La première indication de ceci est dans la man gksupage:
gksu is a frontend to su and gksudo is a frontend to sudo.
Si vous cherchez dans le source ( apt-get source gksu) run_mode, vous verrez comment il détecte ceci:
{ /* support gksu_sudo_run */
gchar *myname = g_path_get_basename (argv[0]);
if (!strcmp(myname, "gksudo"))
run_mode = SUDO_MODE;
g_free (myname);
}
Vous pouvez remplacer ceci avec les arguments --su-mode/ -wet --sudo-mode/ -S(vous pouvez donc exécuter des commandes équivalentes sans avoir besoin du gksudolien symbolique ... Mais c'est à vous de décider.
Si vous voulez savoir en quoi ces "modes" diffèrent vraiment, il n'y a que peu d'échappées gksu. Vous devez suivre cela libgksu. C’est la bibliothèque qui vérifie les autorisations avant de passer au système.
Si aucun mode n'est spécifié (par exemple, vous appelez gksusans arguments) au moment où il atteint libgksu, il vérifiera Gconf (comme le fait remarquer Stefano) et s'il ne peut toujours pas décider, il passera par défaut au sumode.
bashactive le mode strict POSIX lorsqu’il est appelé sh. Et gksu est également conscient du nom de l'invocation.
Dans Ubuntu (!), Il n'y a pas de différence.
gksunormalement connecter l'utilisateur root et exécuter une application sur cette session. Cependant, sous Ubuntu, le mode "sudo" est utilisé par défaut, ce qui revient à exécuter gksudo. En effet, sur Ubuntu, vous ne pouvez pas vous connecter en tant que root par défaut.
gksudoest l'équivalent graphique de sudo(et, comme le souligne Oli, juste un lien symbolique vers gksu)
De l'entrée gconf de gksu:

De plus, sur la différence entre sudo et gksudo:
Vous ne devriez jamais utiliser sudo normal pour lancer des applications graphiques en tant que root. Vous devriez 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 que les fichiers de votre répertoire personnel deviennent 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).
- (à partir de la documentation de la communauté via Chris Wilson )
Je sais que c'est un vieux fil, mais on m'a demandé de vous parler d'une différence subtile mais essentielle entre gksuet gksudo.
Bien que je me sois longuement penché sur la question, je ne trouve nulle part une différence documentée et pourtant, elle existe. Je n'ai pas non plus découvert pourquoi il y a une différence. J'ai trouvé cela à la dure lorsque j'ai accidentellement supprimé certains fichiers système précisément à cause de cette différence (discuté dans un fil de discussion des forums Ubuntu ) - J'utilisais gksu, mais depuis lors, je me suis assuré de toujours utiliser gksudo.
Pour résumer, essayez ceci.
touch abctouch abc.tmptouch abctmpExécutez les six commandes suivantes. Les cinq premiers donnent le même résultat (attendu) (c'est-à-dire juste abc.tmp), tandis que le sixième inclut un fichier supplémentaire ( abctmp) qu'il ne devrait pas.
find . -regextype posix-egrep -regex '.*\.tmp' -print
sudo find . -regextype posix-egrep -regex '.*\.tmp' -print
gksudo -- find . -regextype posix-egrep -regex '.*\.tmp' -print
gksudo --su-mode -- find . -regextype posix-egrep -regex '.*\.tmp' -print
gksu --sudo-mode -- find . -regextype posix-egrep -regex '.*\.tmp' -print
gksu -- find . -regextype posix-egrep -regex '.*\.tmp' -print
Imaginez les problèmes lorsque vous remplacez -printpar -deletedans la findcommande (ce qui est exactement ce qui m'est arrivé, ce qui a entraîné la suppression de certains fichiers système).
Donc, s'il vous plaît utiliser gksudoau lieu de gksu.
gksudoéquivaut à tapergksu --sudo-mode