¿Hay alguna diferencia entre el comportamiento de gksu foo
y gksudo foo
?
¿Se pueden usar indistintamente?
Ambos archivos apuntan al mismo lugar:
$ ls -l /usr/bin/gksudo
lrwxrwxrwx 1 root root 4 2010-09-27 18:23 /usr/bin/gksudo -> gksu
... gksudo
está vinculado a gksu
. Pero esto no significa que hagan lo mismo, ni mucho menos.
Las aplicaciones pueden detectar el comando utilizado para ejecutarlo. Esto es típicamente argv[0]
en lenguajes de estilo C o $0
en scripts de shell de estilo Bourne. La aplicación puede ver eso y, en este caso, en realidad cambia su funcionamiento. La primera indicación de esto está en la man gksu
página:
gksu is a frontend to su and gksudo is a frontend to sudo.
Si busca en la fuente ( apt-get source gksu
) run_mode
, verá cómo detecta esto:
{ /* support gksu_sudo_run */
gchar *myname = g_path_get_basename (argv[0]);
if (!strcmp(myname, "gksudo"))
run_mode = SUDO_MODE;
g_free (myname);
}
Puede anular esto con los argumentos --su-mode
/ -w
y --sudo-mode
/ -S
(para que pueda ejecutar comandos equivalentes sin necesidad del gksudo
enlace simbólico ... Pero eso depende de usted.
Si quieres saber cómo estos "modos" realmente difieren, solo hay un poco de escape gksu
. Tienes que seguirlo libgksu
. Esta es la biblioteca que realmente verifica los permisos antes de entregarlos al sistema.
Si no se especifica ningún modo (por ejemplo, llama gksu
sin argumentos) para cuando llegue libgksu
, verificará Gconf (como señala Stefano) y si aún no puede decidir, pasará al su
modo predeterminado .
bash
activa el modo estricto POSIX cuando se invoca comosh
. Ygksu
es también consciente de nombre de invocación.En Ubuntu (!), No hay diferencia.
gksu
normalmente iniciaría sesión en el usuario root y ejecutaría una aplicación en esta sesión. Sin embargo, en Ubuntu, por defecto usa el "modo sudo", que es equivalente a la ejecucióngksudo
. Esto se debe a que en ubuntu no puede iniciar sesión como root de forma predeterminada.gksudo
es el equivalente gráfico desudo
(y como señala Oli, solo un enlace simbólico a gksu)De la entrada gconf de gksu:
Además, sobre la diferencia entre sudo y gksudo:
fuente
Sé que este es un hilo viejo, pero me han pedido que les cuente sobre una diferencia sutil pero esencial entre
gksu
ygksudo
.Aunque he buscado mucho, no puedo encontrar una diferencia documentada en ningún lado, y sin embargo, existe. Tampoco he descubierto por qué hay una diferencia. Encontré esto de la manera difícil cuando eliminé accidentalmente algunos archivos del sistema precisamente debido a esta diferencia (discutido en un hilo en los foros de Ubuntu ): había estado usando
gksu
, pero desde entonces me he asegurado de usar siempregksudo
.Para resumir, intente esto.
touch abc
touch abc.tmp
touch abctmp
Ejecute los siguientes seis comandos. Los primeros cinco dan el mismo resultado (esperado) (es decir, solo
abc.tmp
), mientras que el sexto incluye un archivo adicional (abctmp
) que no debería.Imagine los problemas cuando reemplaza
-print
con-delete
en elfind
comando (que es exactamente lo que me sucedió, causando que se eliminen algunos archivos del sistema).Entonces, por favor use en
gksudo
lugar degksu
.fuente
gksudo
es equivalente a escribirgksu --sudo-mode