X11 forwarding por SSH tras ejecutar su

En otras entradas ya he hablado sobre como hacer X11 forwarding, tanto en Linux como Windows, pero nunca he explicado cómo hacerlo si necesitamos escalar privilegios una vez que hemos entrado por SSH, es decir, saltando a root.

Hay varias formas. Algunas lo que hacen es utilizar la cookie que se le asigna al usuario al hacer la redirección de X, lo malo es que para utilizar este método hay que tener xauth instalado y en caso de sistemas como Solaris puede que no lo tengáis. Básicamente se trata de averiguar la cookie que se asigna al hacer el forwarding y tras hacer el su, decir al nuevo usuario cual es la cookie para que sea la misma que nos han asignado inicialmente:

$ ssh -X foo@test
$ xauth list $DISPLAY 
localhost:10 mit-magic-cookie-1 93k398djkxx0lk3b4ada33dcx657d3999123a2
$ su -
# xauth add localhost:10 mit-magic-cookie-1 93k398djkxx0lk3b4ada33dcx657d3999123a2

Hay otro método más sencillo, en el que lo único que debemos hacer es, tras hacer el su -, exportar las variables de entorno del DISPLAY y la XAUTHORITY (confirmad la ubicación del archivo) originales del usuario con el que hemos hecho el X11 forward:

$ ssh -X foo@test
$ echo $DISPLAY 
localhost:10.0
$ su -
# export DISPLAY=localhost:10.0
# export XAUTHORITY=/home/foo/.Xauthority