Respuestas:
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 como sh
. Y gksu
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ón gksudo
. Esto se debe a que en ubuntu no puede iniciar sesión como root de forma predeterminada.
gksudo
es el equivalente gráfico de sudo
(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:
Nunca debe usar sudo normal para iniciar aplicaciones gráficas como root. Debe usar gksudo (kdesudo en Kubuntu) para ejecutar dichos programas. gksudo establece HOME = ~ root y copia .Xauthority en un directorio tmp. Esto evita que los archivos en su directorio de inicio sean propiedad de root. (AFAICT, esto es todo lo que es especial sobre el entorno del proceso iniciado con gksudo vs. sudo).
- (de la documentación de la comunidad a través de Chris Wilson )
Sé que este es un hilo viejo, pero me han pedido que les cuente sobre una diferencia sutil pero esencial entre gksu
y gksudo
.
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 siempre gksudo
.
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.
find . -regextype posix-egrep -regex '.*\.tmp' -print
sudo find . -regextype posix-egrep -regex '.*\.tmp' -print
gksudo -- find . -regextype posix-egrep -regex '.*\.tmp' -print
gksudo --su-mode -- find . -regextype posix-egrep -regex '.*\.tmp' -print
gksu --sudo-mode -- find . -regextype posix-egrep -regex '.*\.tmp' -print
gksu -- find . -regextype posix-egrep -regex '.*\.tmp' -print
Imagine los problemas cuando reemplaza -print
con -delete
en el find
comando (que es exactamente lo que me sucedió, causando que se eliminen algunos archivos del sistema).
Entonces, por favor use en gksudo
lugar de gksu
.
gksudo
es equivalente a escribirgksu --sudo-mode