LinuxParty
Las aplicaciones de gráficas en Linux (en adelante GUI) usan X Window System, un sistema de cliente-servidor diseñado para permitir que múltiples usuarios accedan a un ordenador en una red usando aplicaciones en ventana. Una visualización de X es conocida por un nombre en la forma de hostname:displaynumber.screennumber. Para Linux ejecutándose en una estación de trabajo tal como un PC, normalmente sólo hay una visualización con una sola pantalla. En este caso, displayname puede ser, y normalmente es, omitido de forma que la visualización es conocida como :0.0 o algunas veces sólo :0.
Si no quiere los dolores del parto, sino el niño, o lo que es lo mismo, si no está interesado en la explicación, sino simplemente en obtener los resultados, tal vez debería leerse este artículo:
Ejecutar aplicaciones gráficas de Linux, en local, con privilegios de root y otros usuarios.
El servidor de X Window System necesita conocer la visualización y también si está autorizado para conectarse al servidor. La autorización es más comúnmente realizada usando MIT-MAGIC-COOKIE-1, que es una cadena de caracteres larga aleatoria que es regenerada siempre que el servidor se reinicia. Para que esas aplicaciones puedan pasar esta información al servidor de X, tendrá las variables DISPLAY y XAUTHORITY establecidas en su entorno. La variable XAUTHORITY apuntará a un archivo que normalmente sólo puede ser leído o escrito por el usuario propietario como una medida de seguridad. Asumimos que está usando un inicio de sesión gráfico si está leyendo esto, así que su inicio ya debió haber establecido éstas para usted. El ejemplo en el Listado 6 es de un sistema de Ubuntu y muestra los valores de las variables DISPLAY y XAUTHORITY así como la propiedad para el archivo al que apunta la variable XAUTHORITY.
Listado 6. DISPLAY y XAUTHORITY
ian@pinguino:~$ echo $DISPLAY :0.0 ian@pinguino:~$ echo $XAUTHORITY /var/run/gdm/auth-for-ian-WoeKHn/database ian@pinguino:~$ ls -l $XAUTHORITY -rw------- 1 ian ian 53 2011-04-01 16:24 /var/run/gdm/auth-for-ian-WoeKHn/database |
Ahora intentamos usar sudo
para ejecutar el comando xclock
como el usuario editor
, nuevamente en nuestro sistema de Ubuntu. Como se muestra en el Listado 7 , los valores para las variables DISPLAY y XAUTHORITY son los mismos que para el usuario ian
, pero el comando xclock
falla.
Listado 7. DISPLAY y XAUTHORITY con sudo
ian@pinguino:~$ sudo -u editor echo $DISPLAY [sudo] password for ian: :0.0 ian@pinguino:~$ sudo -u editor echo $XAUTHORITY /var/run/gdm/auth-for-ian-WoeKHn/database ian@pinguino:~$ sudo -u editor xclock No protocol specified Error: Can't open display: :0.0 |
En este caso, el usuario editor
tiene la variable XAUTHORITY establecida para /var/run/gdm/auth-for-ian-WoeKHn/database, pero ya vimos que los permisos en ese archivo sólo permiten al usuario ian
leerlo o escribirlo. Asimismo, la variable puede no ser establecida si el usuario editor
no puede leer el archivo al que apunta. Antes de que observemos cómo atender este problema, veamos lo que sucede si dejamos de establecer las variables DISPLAY o XAUTHORITY para el usuario ian.
. Haremos esto al ejecutar el comando xclock
con una variable de entorno modificada usando, del comando env
, la opción -u
para dejar de establecer una variable de entorno antes de ejecutar xclock
. Nuestros resultados están en el Listado 8.
Listado 8. Dejando de establecer DISPLAY y XAUTHORITY
ian@pinguino:~$ env -u DISPLAY xclock Error: Can't open display: ian@pinguino:~$ env -u XAUTHORITY xclock |
Tal vez le sorprenda ver que el comando xclock
se ejecuta, aunque dejamos de establecer la variable de entorno XAUTHORITY.
Hasta ahora, hemos mencionado el método de seguridad MIT-MAGIC-COOKIE-1. Si el token no es proporcionado, el servidor de X también verificará una lista de hosts autorizados. Use el comando xhost
para mostrar o actualizar la lista. Use la opción +
para añadir entradas y la opción -
para eliminar entradas. Use la entrada especial family local:
(note el carácter ':') para permitir el acceso a la visualización por cualquier usuario local en el sistema. Como usted es un sistema de un solo usuario, esto significa que puede usar su para un usuario arbitrario que no sea de raíz y ahora puede lanzar xclock
u otras aplicaciones de X. Ilustramos el uso del comando xhost
en el Listado 9.
ian@pinguino:~$ xhost access control enabled, only authorized clients can connect SI:localuser:ian ian@pinguino:~$ xhost +local: non-network local connections being added to access control list ian@pinguino:~$ xhost access control enabled, only authorized clients can connect LOCAL: SI:localuser:ian ian@pinguino:~$ sudo -u editor xclock ian@pinguino:~$ # Close the xclock window to return here ian@pinguino:~$ xhost -local: non-network local connections being removed from access control list ian@pinguino:~$ xhost access control enabled, only authorized clients can connect SI:localuser:ian |
En un sistema de un solo usuario, permitir que todos los usuarios locales usen la visualización es normalmente una solución razonable y simple. Si necesita ser más restrictivo, use xauth
para extraer la cookie de su archivo XAUTHORITY y désela al usuario que necesita el acceso a la visualización. En el Listado 10 realizamos las siguientes tareas:
- Use
xauth
como el usuarioian
para mostrar la cookie en un formato que pueda ser enviado por e-mail o de alguna otra manera al otro usuario deseado. - Use
sudo -s
y conmútese al usuarioeditor
para ejecutar varios comandos. - Use
xauth
para crear un nuevo archivo de autorización. Note que usamosecho
para conducir los datos a stdin mientras dividimos el comando en varias líneas al usar una barra inclinada invertida (\). - Exportamos un nuevo valor para la variable XAUTHORITY, así que ahora apunta a nuestro archivo de autorización recién creado.
- Finalmente, ejecutamos el comando xclock usando un carácter & para ejecutarlo en segundo plano y mantener el control de nuestra ventana de terminal.
ian@pinguino:~$ xauth -f $XAUTHORITY nextract - :0 0100 0008 70696e6775696e6f 0001 30 0012 4d49542d4d414749432d434f4f4b49452d31 0010 3c4bc87 c2ce4ce5e97f8199c213b4ec9 ian@pinguino:~$ sudo -s -u editor editor@pinguino:~$ echo "0100 0008 70696e6775696e6f 0001 30 0012"\ > " 4d49542d4d414749432d434f4f4b49452d31"\ > " 0010 3c4bc87c2ce4ce5e97f8199c213b4ec9" | > xauth -f ~editor/temp-xauth nmerge - xauth: creating new authority file /home/editor/temp-xauth editor@pinguino:~$ export XAUTHORITY=~editor/temp-xauth editor@pinguino:~$ xclock& [1] 4827 |
Esta breve introducción probablemente lo iniciará con la ejecución de aplicaciones de X como otro usuario. Aunque hemos usado Ubuntu como un ejemplo, los principios básicos que hemos demostrado aquí aplican para todas las distribuciones. Para obtener más detalles sobre el uso de los comandos xauth
y xhost
, puede usar cualquiera de estos comandos como sea apropiado para ver las páginas de manual online:
info xauth
man xauth
info xhost
man xhost
-
Documentación
- Los alemanes denuncian la influencia del inglés mientras el "apóstrofe del idiota" obtiene la aprobación oficial
- Explora la Historia Hispánica con este Mapa Interactivo de la Real Academia de Historia
- ¿CÓMO SE INVENTÓ LA RUEDA?
- ¿Estamos en el 'Antropoceno', la era humana? Los científicos dicen: no
- Quemadores de Hidrógeno Verde para una Producción de Asfalto Sostenible
- Jericó: Un Viaje a Través de los Milenios en la Ciudad más Antigua del Mundo
- La Generación Z recurre a los libros y bibliotecas físicos
- El Trágico Declive de la Biblioteca de Alejandría: Una Epopeya Perdida en Llamas
- Los Neandertales fueron los primeros homínidos en controlar el fuego, y no los sapiens, sugiere un estudio
- Un grupo de Hóminidos Eurosiáticos podrían poner en duda todo lo que sebe sobre el del Homo Sapiens, hasta la fecha
- Descubre la Iglesia de San Antonio de los Alemanes: Un Tesoro Arquitectónico en el Corazón de Madrid
- La Asombrosa Reconstrucción de una Mujer Prehistórica Después de 4 Mil Años
- Descubren nuevo fósil de hace 8.7 millones de años en Turquía que desafía la historia sobre el origen de la humanidad
- Los arqueólogos descubren una lengua secreta perdida de hace 3.000 años
- La Queja Más Antigua del Mundo: La Historia Detrás de una Antigua Carta de Cliente Insatisfecho