miércoles, 29 de abril de 2015

X11 como usuario root o cualquier otro usuario

Muchos de los usuarios de linux se han sentido tentados alguna vez por ejecutar una aplicación gráfica desde la terminal en modo root o cualquier otro usario, pero se han encontrado con algo como esto:

.... cannot open display: :0.0

Si se trata de una aplicación java dira algo así:

java.lang.internalerror can't connect to X11 window server using ' 0.0' as the value of the DISPLAY variable

La forma más fácil de salir de esto seria mediante un: 

$ xhost +si:localuser:nombre_usuario 

También se podría modificar directamente los archivos involucrados en esto, aunque como era de suponer, es más tedioso, lo indico a modo de curiosidad. 

Para permitir que la aplicación se ejecute con el usuario activo en la consola se debe primero ubicar una clave en el directorio /var/run/xauth/ , allí se encuentra un archivo que se puede también conseguir con el comando:

$ find /var/run/xauth/A${DISPLAY}-*|tail -n1

Publicado por KENTNL, de cuyo blog extrage toda esta información . Luego de identificado el archivo (en mi máquina solo es uno), se debe imprimir y decodificar la clave con el comando:

$ sudo xauth -f /var/run/xauth/nombre_archivo  list

Lo cual mostrara algo como esto:

#ffff##:  MIT-MAGIC-COOKIE-1  711f067eae4ec73599dc38dbfaa164f0


Es casi obvio que 711f067eae4ec73599dc38dbfaa164f0 es la clave. Dentro del usuario en el cual queremos tener acceso tipearemos finalmente un comando como este:

$ xauth add :0 MIT-MAGIC-COOKIE-1 711f067eae4ec73599dc38dbfaa164f0

El cual creara un archivo llamado .Xauthority en el directorio home del usuario logueado con las credenciales que le daran finalmente el acceso a X11. Si después se le quiere quitar acceso a X11 basta con borrar ese archivo. Desgraciadamente la clave cambia con cada reinicio de la computadora asi que si se quiere hacer este cambio permanente deben seguirse las recomendaciones del blog de KENTNL.


No hay comentarios:

Publicar un comentario