Entendiendo como funcionan las credenciales de X11
Sobre el post "Script para propagar credenciales X11 mediante sudo"...
Recomiendo que se entienda cómo funciona esto de las X. Os ayudará, y no sufriréis cuando las cosas no funcionen:
- Cuando te logueas, se crea:
La variable $DISPLAY=localhost:11.0. Eso indica que hay un servidor de X escuchando en el puerto TCP 6011 de localhost. En el caso del SSH, se crea un túnel virtual al servidor de X de tu PC.
Se da de alta una clave (como las claves de SSH o certificados de SSL) en .Xauthority. Se puede consultar con xauth:
$ xauth list hostname/unix:14 MIT-MAGIC-COOKIE-1 6a45c2933b65cd936f3e9031c8553d75
- Cuando ejecutas el script, lo único que se hace es EXPORTAR la clave (xauth extract fichero
/11.0) e importárselo al usuario destino (xauth merge fichero), usando sudo para ejecutar los comandos.
3. Al hacer sudo al usuario destino, debe permanecer la variable $DISPLAY. En ocasiones sudo está configurado para no propagar esa variable, por lo que si no tiene valor, se le debe asignar (de ahí lo de sudo -u usuario DISPLAY=... –s)
Esto puede fallar:
Porque no se crea el $DISPLAY o la clave inicial. Esto a su vez es:
- Porque no está instalado el xauth o no está en el $PATH del usuario.
- Porque el servidor de SSH no tiene habilitado el soporte de X forwarding.
- Porque el $HOME del usuario no está accesible para escritura/lectura/bloqueo.
- Porque el servidor no tienes arrancado el servidor de X o bien configurado el X forwarding: (http://www.cse.unsw.edu.au/~helpdesk/documentation/Putty.html)
Porque no se propagan las credenciales al usuario destino:
- Porque no está instalado el xauth o no está en el $PATH del usuario.
- Porque el $HOME del usuario destino no está accesible para escritura/lectura/bloqueo.
- Porque no se tiene permisos para hacer sudo.