Ejecutar aplicaciones gráficas con otro usuario en una sesión X remota

Ocurre bastante a menudo que cuando te conectas a una máquina remota mediante SSH y necesitas lanzar un comando con otro usuario, te da un error semejante a este:

$ sudo virt-manager
[sudo] password for juan:
PuTTY X11 proxy: wrong authorisation protocol attemptedPuTTY X11 proxy: wrong authorisation protocol attemptedPuTTY X11 proxy: wrong authorisation protocol attemptedPuTTY X11 proxy: wrong authorisation protocol attemptedTraceback (most recent call last):
File "/usr/share/virt-manager/virt-manager.py", line 383, in <module>
main()
File "/usr/share/virt-manager/virt-manager.py", line 286, in main
raise gtk_error
RuntimeError: could not open display

Esto es debido a que el servidor X utiliza una cookie de autenticación que se guarda en el perfil del usuario en ~/.Xauthority
Para poder pasar esta autenticación a otro usuario, podemos utilizar los siguientes comandos:

Primero listamos las cookies que tenemos

$ xauth list
xenon.local/unix:11  MIT-MAGIC-COOKIE-1  32a84908586f4e23c0b68f4478a32578
xenon.local/unix:10  MIT-MAGIC-COOKIE-1  ba33662833233fe85ece9e4825c44d5d

Y luego localizamos la que nos interesa fijándonos en el valor de la variable DISPLAY y se la añadimos al otro usuario:

$ echo $DISPLAY
localhost:10.0
$ su -
Contraseña:
# xauth add xenon.local/unix:10  MIT-MAGIC-COOKIE-1  ba33662833233fe85ece9e4825c44d5d

Ahora ya podemos lanzar cualquier comando como root y las X se redirigirán por nuestra conexión SSH.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s