On Thu, Mar 20, 2008 at 07:39:44PM -0300, Marcelo Guzmán wrote:
> Saludos listeros,
> 
> Les cuento:
> Al ejecutar como usuario en la consola cualquier aplicación que
> necesite recurrir al servidor gráfico para correr (ejemplo kwrite), me
> funciona sin problemas;
> Pero al hacerlo como root me lanza el siguiente error:
> 
> debian:/home/marcelo# kwrite
> Xlib: connection to ":0.0" refused by server
> Xlib: No protocol specified
> 
> kwrite: cannot connect to X server :0.0
> 
> Googleando por ahí encontré que ejecutando el comando "xhost +" como
> usuario se arreglaba el problema y efectivamente puedo ejecutar como
> root cualquier aplicación.

Resumen ejecutivo:

El servidor X puede usar mecanismos de control de acceso para
determinar a qué clientes permite conectarse. Esto es opcional (quizá
por eso en KDE no lo veías, aunque en realidad lo dudo) pero muy buena
idea, ya que un programa que pueda conectar al servidor X puede, por
lo menos en principio, observar el contenido de todas tus ventanas e
interceptar tu teclado y mouse.

Dicho control de acceso se implementa (normalmente) por medio de
variables de entorno que apuntan a la "clave secreta" (no es
exáctamente eso, pero bueno)

Cuando ejecutas una sesión de otro usuario dentro de un terminal, el
entorno no se copia, por lo que los programas que corran desde ahí no
tienen la clave para conectarse.

El programa xhost controla el uso de dicho control de acceso. En
particular, 
 $ xhost + 
deshabilita por completo esa caracteristica. Lo cual es, como ya dije
arriba, en general mala idea.

¿Soluciones? Ordenadas de mayor a menor en incomodidad, y de menor a
mayor en cuanto tienes que aprender para usarlas:

1. Sigue usando 'xhost +', pero ten cuidado de reactivar el control de
acceso tan pronto como te sea posible (con 'xhost -').

2. Dale acceso a root a la "clave". A menos que tu máquina tenga una
configuración *muy* inusual, decir
 $ export XAUTHORITY=~usuario/.Xauthority
en tu sesión de root justo después de iniciarla debería funcionar
(reemplaza "usuario" por el nombre de tu usuario).

3. Usa un método de ejecutar cosas como root que sí copie el
entorno. sudo es tu amigo. "man sudo" es una buena forma de conocer a
tus amigos.

Attachment: signature.asc
Description: Digital signature

Responder a