Existe alguma diferença entre o comportamento de gksu foo
e gksudo foo
?
Eles podem ser usados de forma intercambiável?
Ambos os arquivos apontam para o mesmo local:
$ ls -l /usr/bin/gksudo
lrwxrwxrwx 1 root root 4 2010-09-27 18:23 /usr/bin/gksudo -> gksu
... gksudo
está vinculado a gksu
. Mas isso não significa que eles fazem as mesmas coisas, longe disso.
Os aplicativos podem detectar o comando usado para executá-lo. Isso geralmente ocorre argv[0]
em linguagens no estilo C ou $0
em scripts shell no estilo Bourne. O aplicativo pode analisar isso e, neste caso, na verdade, altera como ele funciona. A primeira indicação disso está na man gksu
página:
gksu is a frontend to su and gksudo is a frontend to sudo.
Se você procurar na fonte ( apt-get source gksu
) run_mode
, verá como ele 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 esse com os --su-mode
/ -w
e --sudo-mode
/ -S
argumentos (assim você pode executar comandos equivalentes sem a necessidade da gksudo
ligação simbólica ... Mas isso é até você.
Se você quiser saber como esses "modos" realmente diferem, há apenas um pouco de escape gksu
. Você precisa segui-lo 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) quando chegar libgksu
, ele verificará o Gconf (como Stefano aponta) e, se ainda não puder decidir, o padrão será o su
modo.
bash
ativa o modo estrito POSIX quando chamado comosh
. E tambémgksu
está ciente do nome da chamada.No Ubuntu (!), Não há diferença.
gksu
normalmente efetuaria login no usuário raiz e executaria um aplicativo nesta sessão. No entanto, no Ubuntu, o padrão é usar o "modo sudo", que é equivalente à execuçãogksudo
. Isso ocorre porque no ubuntu, você não pode fazer login como root por padrão.gksudo
é o equivalente gráfico desudo
(e, como Oli aponta, apenas um link simbólico para gksu)Na entrada gconf do gksu:
Além disso, sobre a diferença entre sudo e gksudo:
fonte
Eu sei que esse é um tópico antigo, mas me pediram para falar sobre uma diferença sutil, mas essencial, entre
gksu
egksudo
.Embora eu tenha procurado por muito tempo, não consigo encontrar uma diferença documentada em nenhum lugar e, no entanto, ela existe. Também não descobri por que há uma diferença. Achei isso da maneira mais difícil quando acidentalmente excluí alguns arquivos do sistema precisamente por causa dessa diferença (discutida em um tópico nos fóruns do Ubuntu ) - eu estava usando
gksu
, mas desde então sempre me certifico de usá-logksudo
.Para resumir, tente isso.
touch abc
touch abc.tmp
touch abctmp
Execute os seis comandos a seguir. Os cinco primeiros dão o mesmo resultado (esperado) (ou seja, apenas
abc.tmp
), enquanto o sexto inclui um arquivo extra (abctmp
) que não deveria.Imagine os problemas ao substituir
-print
por-delete
nofind
comando (que é exatamente o que aconteceu comigo, fazendo com que alguns arquivos do sistema sejam excluídos).Então, por favor use em
gksudo
vez degksu
.fonte
gksudo
é equivalente a tipagemgksu --sudo-mode