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
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s