LinuxParty

Ratio: 2 / 5

Inicio activadoInicio activadoInicio desactivadoInicio desactivadoInicio desactivado
 

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.


Listado 9. Usando xhost

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:

 

  1. Use xauth como el usuario ian para mostrar la cookie en un formato que pueda ser enviado por e-mail o de alguna otra manera al otro usuario deseado.
  2. Use sudo -s y conmútese al usuario editor para ejecutar varios comandos.
  3. Use xauth para crear un nuevo archivo de autorización. Note que usamos echo para conducir los datos a stdin mientras dividimos el comando en varias líneas al usar una barra inclinada invertida (\).
  4. Exportamos un nuevo valor para la variable XAUTHORITY, así que ahora apunta a nuestro archivo de autorización recién creado.
  5. Finalmente, ejecutamos el comando xclock usando un carácter & para ejecutarlo en segundo plano y mantener el control de nuestra ventana de terminal.


Listado 10. Usando xauth

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

 

Pin It

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías

Nos obligan a moslestarte con la obviedad de que este sitio utiliza Cookies. Ver política