Y at-il une différence entre le comportement de gksu foo
et gksudo foo
?
Peuvent-ils être utilisés de manière interchangeable?
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
. Etgksu
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écutergksudo
. En effet, sur Ubuntu, vous ne pouvez pas vous connecter en tant que root par défaut.gksudo
est l'équivalent graphique desudo
(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:
la source
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
etgksudo
.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 utilisergksudo
.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.Imaginez les problèmes lorsque vous remplacez
-print
par-delete
dans lafind
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 degksu
.la source
gksudo
équivaut à tapergksu --sudo-mode