Ejecutar programas GUI como otro usuario en Linux

A veces es útil ejecutar un programa como otro usuario sin tener que cambiar la sesión de escritorio. Para los programas de línea de comandos es fácil ya que podemos simplemente usar el comando su:

monstruosoft@monstruosoft-PC:~$ su - invitado 
Contraseña: 
invitado@monstruosoft-PC:~$ whoami 
invitado
invitado@monstruosoft-PC:~$ exit
logout
monstruosoft@monstruosoft-PC:~$ whoami 
monstruosoft

Pero sin intentamos ejecutar una aplicación con interfaz gráfica (GUI), recibimos un error:

monstruosoft@monstruosoft-PC:~$ su - invitado 
Contraseña: 
invitado@monstruosoft-PC:~$  xeyes 
No protocol specified
Error: Can't open display: :0

Esto se debe a que el display fue creado por el usuario que inició la sesión y, de forma predeterminada, el servidor X no permite que otros usuarios puedan usarlo. Sin embargo, siendo que el servidor X usa un modelo servidor-cliente, no es sorpresa que pueda fácilmente aceptar conexiones de otros usuarios si se configura para ello. Por suerte contamos con el comando xhost que nos permite hacer justamente eso e indicar al servidor X el tipo de conexiones que debe aceptar. De forma predetermiada, el servidor X sólo acepta conexiones del usuario que inició la sesión:

monstruosoft@monstruosoft-PC:~$ xhost 
access control enabled, only authorized clients can connect
SI:localuser:monstruosoft

Podemos usar el comando xhost para permitir el acceso al servidor X a otros usuarios locales usando el siguiente comando:

monstruosoft@monstruosoft-PC:~$ xhost +local:
non-network local connections being added to access control list
monstruosoft@monstruosoft-PC:~$ xhost 
access control enabled, only authorized clients can connect
LOCAL:
SI:localuser:monstruosoft

Ahora todos los usuarios locales pueder tener acceso al servidor X:

monstruosoft@monstruosoft-PC:~$ su - invitado 
Contraseña: 
invitado@monstruosoft-PC:~$ xeyes 
invitado@monstruosoft-PC:~$

Cuando ya no necesites acceso al servidor X desde otro usuario puedes revocar los accesos:

monstruosoft@monstruosoft-PC:~$ xhost -local:
non-network local connections being removed from access control list

Para más información sobre el comando xhost puedes consultar su manual:

monstruosoft@monstruosoft-PC:~$ man  xhost

Habilitar PointerKeys en Linux

PointerKeys es una utilidad de accesibilidad de Linux que permite controlar el mouse usando las teclas del teclado numérico; en Windows hay una función equivalente llamada MouseKeys. PointerKeys puede ser útil cuando tienes un mouse que ha comenzado a fallar pero también lo he encontrado útil para hacer movimientos más precisos con el mouse (lo he encontrado particularmente útil para dibujar cuando no tienes una tableta de dibujo) :P. En todo caso, si algún día lo necesitas, no tienes que instalar nada ya que PointerKeys (algunas veces también se le llama por el nombre MouseKeys en Linux) es una opción que viene incluida de forma nativa en el X Window System o X11.

Read More