Os dois arquivos apontam para o mesmo lugar:
$ ls -l /usr/bin/gksudo
lrwxrwxrwx 1 root root 4 2010-09-27 18:23 /usr/bin/gksudo -> gksu
... gksudo
é um link simbólico para gksu
. Mas isso não significa que eles façam as mesmas coisas, longe disso.
Os aplicativos podem detectar o comando usado para executá-lo. Isso é normalmente argv[0]
em linguagens de estilo C ou $0
em scripts de shell estilo Bourne. O aplicativo pode ver isso e, nesse caso, ele realmente muda a maneira como funciona. A primeira indicação disso está na página man gksu
:
gksu is a frontend to su and gksudo is a frontend to sudo.
Se você procurar na fonte ( apt-get source gksu
) por run_mode
, verá como ela detecta isso:
{ /* support gksu_sudo_run */
gchar *myname = g_path_get_basename (argv[0]);
if (!strcmp(myname, "gksudo"))
run_mode = SUDO_MODE;
g_free (myname);
}
Você pode substituir isso com os argumentos --su-mode
/ -w
e --sudo-mode
/ -S
(para poder executar comandos equivalentes sem precisar do link simbólico gksudo
... Mas isso é com você.
Se você quiser saber como esses "modos" realmente diferem, há apenas um pouco de escape em gksu
. Você precisa seguir em libgksu
. Esta é a biblioteca que realmente verifica as permissões antes de entregá-las ao sistema.
Se nenhum modo for especificado (por exemplo, você chamar gksu
sem argumentos) até atingir libgksu
, ele será verificado Gconf (como Stefano aponta) e se ele ainda não puder decidir, o padrão será su
.