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 .