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
... gksudo
est 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 $0
dans 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 gksu
page:
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
/ -w
et --sudo-mode
/ -S
(vous pouvez donc exécuter des commandes équivalentes sans avoir besoin du gksudo
lien 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 gksu
sans 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 su
mode.
bash
active 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.
gksu
normalement 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.
gksudo
est 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 gksu
et 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 abc
touch abc.tmp
touch abctmp
Exé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 -print
par -delete
dans la find
commande (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 gksudo
au lieu de gksu
.
gksudo
équivaut à tapergksu --sudo-mode