El Lunes 27 Noviembre 2006 22:30, Luciano escribió:
> otra vez me paso lo mismo :S
> trate de hacer lo del xhost y nada :(
>


Usar xhost es por demás de inseguro.

Aquí una explicación de Emiliano que vio el post y quiso colaborar:

http://pastebin.com/835557

  Muchas veces pasa que algunos usuarios preguntan: 
 
"Porque no puedo correr (pongan su aplicación X aqui) como root?" 
 
El problema viene dado porque X dispone de ciertos mecanismos de seguridad, 
los cuales impiden que cualquiera pueda conectarse a nuestro display y 
mostrar ventanas. La página del manual de Xsecurity(7) nos da una lista 
de los métodos de control de acceso disponibles. 
El primer método de control esta basado en hosts, y se controla con la 
utilidad 
xhost(1). Sin embargo, la página advierte que 
 
"Cualquier cliente de un host listado en la lista de control de accesos de 
 hosts tiene permitido acceder al servidor X. Este sistema puede trabajar 
 razonablemente bien en un ambiente donde todos confían en todos" 
 
Si además estamos conectados a internet, estamos en un serio problema: no es 
precisamente un lugar donde "todos confian en todos" 
 
Desgraciadamente, la respuesta a la pregunta de arriba casi siempre es 
 
"ejecuta xhost +" 
 
lo cual es un muy serio error de seguridad. Funciona, si, pero no solo para 
la persona que quería hacerlo, sino para todos los que puedan querer 
conectarse. 
 
Ahora bien, si pasamos al segundo método de control de accesos, veremos que, 
si bien no es una maravilla de seguridad, al menos no expone la máquina como 
la solución del "xhost +". Dicho método (MIT-MAGIC-COOKIE-1) se controla 
mediante la utilidad xauth(1). 
 
Veamos que pasa en mi máquina: 
 
   $ su - 
   Password: 
   Terminal type is xterm.                                                  
   [EMAIL PROTECTED]:~# kate 
   kate: cannot connect to X server  
   [EMAIL PROTECTED]:~# export DISPLAY=:0 
   [EMAIL PROTECTED]:~# kate 
   Xlib: connection to ":0.0" refused by server 
   Xlib: No protocol specified 
    
   kate: cannot connect to X server :0 
   [EMAIL PROTECTED]:~#  
  
El mismo problema que generó la pregunta inicial. Si hiciera xhost + tendría 
resuelto este problema, pero a costa de generar uno mucho peor. 
 
Hagámoslo con xauth. 
 
   [EMAIL PROTECTED] exit 
   logout 
   $ xauth -n list 
   192.168.6.3:0  MIT-MAGIC-COOKIE-1  73df0129397a17256f13dcdc55f9f150 
   pepe.dominio.net/unix:0  MIT-MAGIC-COOKIE-1  
73df0129397a17256f13dcdc55f9f150 
   $ 
 
Vemos que tengo la posibilidad de acceder mediante dos métodos: tcp (entrada 
192.168.6.3:0, puerto 6000) y sockets unix (pepe.dominio.net/unix:0). 
 
Exportemos la MAGIC-COOKIE a un archivo asi podemos importarla en otro lugar 
(en este caso, el root) 
 
   $ xauth extract authfile $DISPLAY 
   $ su - 
   Password: 
   Terminal type is xterm.                                                  
   [EMAIL PROTECTED]:~# kate 
   kate: cannot connect to X server  
   [EMAIL PROTECTED]:~# export DISPLAY=:0 
   [EMAIL PROTECTED]:~# kate 
   Xlib: connection to ":0.0" refused by server 
   Xlib: No protocol specified 
 
   kate: cannot connect to X server :0 
   [EMAIL PROTECTED]:~# xauth merge /home/user/authfile  
   [EMAIL PROTECTED]:~# kate & 
   [EMAIL PROTECTED]:~# xauth list  
   maq033.imae.fceia.unr.edu.ar/unix:0  MIT-MAGIC-COOKIE-1  
73df0129397a17256f13dcdc55f9f150 
 
 
Finalmente anduvo, y sin necesidad de abrir mi display al mundo. Puedo 
conectarme a la X sin problemas. Este archivo podría copiarlo a otras 
máquinas de mi red interna, importarlo con xauth y conectarme desde ahi. 
 
Finalmente, unas aclaraciones y/o recomendaciones: 
* El método no es una panacea de seguridad, ya que la cookie se transmite en 
texto plano en las conexiones de red. 
* Si realmente somos paranoicos (al menos yo lo soy) deberemos directamente 
deshabilitar la conexión a la X mediante tcp (la opcion es -nolisten tcp en 
el comando que lanza la X), aunque esto nos impide conectarnos desde otra 
máquina. 
* Si lo hacemos todo localmente, podríamos directamente, como root, haber 
apuntado la "base de datos" de cookies a la del usuario en cuestión: 
 
   [EMAIL PROTECTED]:~# XAUTHORITY=/home/usuario/.Xauthority kate & 
 
y también andaría (aunque es un método un tanto rudo para el usuario, sobre 
todo si no es el mismo que el root !!!). Para mi gusto este sería el consejo 
rápido y sucio para darle a alguien en vez del "xhost +". 
* Si no andamos muy peleados con el inglés, leer las páginas de manual de 
X(7), xdm(1), Xsecurity(7), Xserver(1), xhost(1) y xauth(1). Y si, ya se que 
son muchas, pero como dice un viejo preoverbio chino "Sigue el sagrado camino 
del RTFM, pequeño saltamontes ..." 
* En http://tldp.org/HOWTO/Remote-X-Apps.html esta el howto que me hizo ver 
el tema este del xhost vs xauth. 
* Leer el código fuente de startx(1) es instructivo al respecto , sobre todo 
la parte final. 
* La última: en algunos sistemas (p.ej *BSD), el resolver de hosts es muy 
puntilloso en cuanto a los nombres de archivo y como se resuelven a IPs. Si 
algunos andan con problemas de delays para que se le lancen las aplicaciones 
X, puede ser que haya un problema de este tipo y hay que esperar el timeout 
de la consulta para ir a la IP directamente. Asegurense que su nombre de 
host siempre se resuelva bien, sea mediante /etc/hosts o DNS. 
 
Espero que ayude.

-- 

Sebastián D. Criado - scriado{en}ciudad.com.ar
L.U.G.R.o - http://www.lugro.org.ar
GNU/Linux Registered User # 146768
-------------------------------------------------------------------
"Si el Universo fuera un programa estaría hecho en C, y correría sobre
un sistema UNIX"
                                                   Anónimo.

                        

Attachment: pgpNfr6uBvQnW.pgp
Description: PGP signature

Responder a