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.
signature.asc
Description: Digital signature