Cómo iniciar un programa de X Window como un usuario normal en Linux

Linux

En Windows existe el comando «runas«, que permite a un usuario ejecutar programas específicos con diferentes permisos a los del usuario que ha iniciado la sesión en el sistema. En Linux y otros sistemas operativos UNIX, tenemos el comando su o sudo para el mismo propósito.

Sin embargo, el comando sudo no es tan útil cuando se trata de la ejecución de aplicaciones X Window. Por ejemplo, cuando iniciamos sesión como un usuario normal y tenemos que ejecutar una aplicación de X Window como usuario root. Por ejemplo, si ejecutamos una aplicación como xeyes o cualquier otra como administradores, debemos pasará lo siguiente:

$ su -
Password
[*aquí introducimos la contraseña*]
# xeyes

Si hacemos ésto, obtendremos el siguiente mensaje de error:

(program:15074): Gtk-WARNING **: cannot open display

También es posible que el error sea el siguiente:

** WARNING ** cannot open display

El problema del error son dos variables de entorno: DISPLAY y XAUTHORITY. Es necesario configurarlas correctamente para ejecutar programas de X Window como usuario root mientras estamos conectados como un usuario normal.

Sin embargo, tanto KDE como Gnome vienen con herramientas para hacer frente a este problema. Vamos a ver varios métodos para solucionarlo:

El comando kdsu en KDE

Si nuestro escritorio es KDE, podemos utilizar el comando kdsu en el shell / intérprete de comandos:

$ Kdesu xeyes

El comando gksuexec en Gnome

Si eres usuario de Gnome, puedes utilizar el comando gksuexec en el shell / intérprete de comandos:

$ gksuexec

También puedes utilizar la interfaz de usuario si en el escritorio vas a Aplicaciones -> Herramientas del sistema -> Ejecutar como otro usuario:

También os vamos a enseñar dos métodos alternativos, compatibles con cualquier sistema.

Método alternativo: Crear un alias

Puedes crear un alias del siguiente modo:

$ alias runas='su -c $@'

Ahora debes agrear el alias al script de inicio en bash:

$ echo "alias runas='su -c $@'" >> .bash_profile

Ya puedes utilizar el alias del siguiente modo para iniciar cualquier programa X Window:

$ runas nombre-aplicacion
runas xeyes

Método alternativo: Configurar las variables de entorno

Como decíamos, el problema están en las variables de entorno DISPLAY y XAUTHORITY, que no tienen el valro correcto cuando ejecutamos una aplicación como administrador habiéndonos logueado inicialmente como un usuario normal.

Para solucionar el problema. debemos configurar estas dos variables para que apunten a las variables de entorno de los usuarios que están logueados en el sistema en cada momento. Por ejemplo, imagínate que actualmente has accedido al sistema como el usuario neoguias. Estos serían los pasos para configurar las variables de entorno:

4.1. Obtén permisos de super usuario:

neoguias@debian: ~ $ su -
debian:~#

4.2. Configuración de las variables:

# export DISPLAY=0:0
# export XAUTHORITY=/home/neoguias/.Xauthority

4.3. Ya podemos ejecutar la aplicación que utiliza X Window como usuario root. Por ejemplo, para xeyes:

# xeyes

Todo funcionará como la seda. Espero que os haya sido útil.


Avatar de Edu Lazaro

Edu Lázaro: Ingeniero técnico en informática, actualmente trabajo como desarrollador web y programador de videojuegos.

👋 Hola! Soy Edu, me encanta crear cosas y he redactado esta guía. Si te ha resultado útil, el mayor favor que me podrías hacer es el de compatirla en Twitter 😊

Si quieres conocer mis proyectos, sígueme en Twitter.

Deja una respuesta

“- Hey, Doc. No tenemos suficiente carretera para ir a 140/h km. - ¿Carretera? A donde vamos, no necesitaremos carreteras.”