Ejecutar aplicaciones gráficas con permisos de root desde un lanzador

Hay ocasiones en las que por un motivo u otro queremos ejecutar aplicaciones gráficas como superusuario o como si lo estuviera ejecutando otro usuario distinto al nuestro. La mayoría de las personas que conozco (en especial las personas que llevan poco tiempo usando linux) lo hacen desde el terminal con el comando sudo o con el comando su, esta no es la forma más correcta de hacerlo además de que presenta un problema si por ejemplo quieres crear un lanzador que ejecute un programa como root o si quieres ejecutar un comando como root en el miniCLI (es el cuadro de ejecutar aplicación que se abre con ALT+F2).

A continuación voy a exponer varias formas de ejecutar aplicaciones gráficas como root.

Con los comandos sudo o su

Para ejecutar un programa (gedit por ejemplo) con su o con sudo con permisos de root se abre un terminal y se escribe lo siguiente:

Con el comando sudo:

[usuario@localhost ~]$ sudo gedit

En el caso de que en vez de ser el usuario root el que ejecute el comando sea un usuario llamado pepe tendríamos que usar usar la directiva -u y como argumento el nombre del usuario. Ejemplo:

[usuario@localhost ~]$ sudo -u henry ‘gedit’

Con el comando su:

[usuario@localhost ~]$ su -c ‘gedit’

Para que ejecute el comando como si fuera un usuario llamado pepe se usa la directiva -l y como argumento el nombre de usuario:

[usuario@localhost ~]$ su -l henry -c ‘gedit’

Si queremos ejecutar estos comandos desde la miniCLI no funcionarán pero hay un pequeño truco para que funcione que se trata de ejecutar en la miniCLI el comando de nuestro emulador de terminal pasando el comando que quieres que ejecute. Para ver más claro a lo que me refiero pongo un ejemplo usando gnome-terminal. Si al comando gnome-terminal le pasamos el argumento –command=”gedit” abrirá un terminal y ejecutara gedit en ese terminal, sabiendo esto podemos ejecutar aplicaciones gráficas desde la miniCLI así:

gnome-terminal --command="su -l -c gedit"

Como mencioné anteriormente esta es la forma que yo más veo que utiliza la gente pero necesitas abrir un terminal y dependes de él para poder lanzar las aplicaciones. Para evitar la necesidad de abrir un terminal para ejecutar aplicaciones de forma gráfica existe los comandos gksu, kdesu y beesu.

gksu, kdesu y beesu

Antes de escribir los comandos debemos saber qué comando es el que tenemos que usar. gksu se utiliza por lo general en el escritorio de gnome o xfce y kdesu se utiliza para el escritorio de kde. Luego existe beesu que se utiliza en las distribuciones de fedora.

Ahora que ya sabemos que comando debemos usar vamos a ver un par de ejemplos. Para ejecutar gedit como superusuario desde la miniCLI pulsamos la combinación de teclas ALT+F2 y escribimos:

En gnome o xfce:

gksu gedit

En kde:

kdesu gedit

En fedora:

beesu gedit

Y para ejecutar un programa como un usuario llamado henry se hace de forma muy similar en los tres comandos, se abre la miniCLI con ALT+F2 y se pasa la directiva -u y el nombre de usuario para gksu y kdesu y la directiva -l -P seguido del comando y el usuario en ese orden para beesu.

En gnome y xfce:

gksu -u henry 'gedit'

En kdesu:

kdesu -u henry 'gedit'

En fedora:

beesu -l -P 'gedit' henry

 Ejemplo para lanzar linSSID

LinSSID es una herramienta gráfica para monitorizar redes inalámbrica, que no funciona desde el icono de lanzamiento (lanzador) del menú o escritorio; por lo tanto debemos obligatoriamente darle permisos de root a la aplicación, creando un nuevo lanzador en el escritorio (icono de acceso) del linSSID.

Instalamos primero linSSID, para ello bajamos la aplicación desde el repositorio de Debian (para asegurarnos la compatibilidad) desde este link:

https://packages.debian.org/sid/amd64/linssid/download

una ves descargado y desde la consola en el directorio Descargas donde se descargo el programa linssid_2.9-3+b1_amd64.deb, ejecutamos este comando

# dpkg - i linssid_2.9-3+b1_amd64.deb

Esto instalara la aplicación, sin embargo si tratamos de ejecutarlo desde el icono en el menú, este no se ejecuta.

El problema radica en que la aplicación requiere los permisos de root; así que vamos a crear un “acceso directo” – lanzador – que permita ejecutar la aplicación desde nuestro escritorio; con el botón derecho del mouse escogemos en el menú emergente la opción de Crear nuevo Lanzador aquí..

  1. Luego colocamos un nombre que identifique a la aplicación
  2. ingresamos el comando a ejecutar: gksu -u root 'linssid'
  3. finalmente un comentario

Listo, esto crea el lanzador (acceso directo) en el escritorio con las propiedades de root, es posible que nos pida la clave del root, ingresamos y la aplicación es lanzada.