Ejecutando aplicaciones como otro usuario en GNU/Linux y * BSD
October 12th, 2008 by BusindreEl comando su como todos sabemos sirve para poder cambiar de ID de usuario o para transformarse en root (super usuario / Administrador), este nos permite usar el intérprete de comandos de otro usuario sin necesidad de cerrar la sesión. A veces nos interesa poder arrancar un determinado programa o servicio con un ID de otro usuario, sobre todo desde el usuario root, sin tener que abrir una sesión con dicho usuario para poder hacerlo.
En el arranque del sistema podemos encontrarnos con ficheros como rc.local, este archivo se utiliza al terminar el inicio del sistema, ejecutando todos los comandos que contenga escritos como usuario root. Al ser el usuario root bajo el que se arrancan esos comandos de rc.local, puede ser interesante poder decirle que los arranque con unos UID específicos y no como root, que es lo que venimos a comentar en este pequeño post, vamos a ver como arrancar aplicaciones bajo el ID de otro usuario del sistema.
Sintaxis:
$ su 'USUARIO' -c 'PROGRAMA'
Ejemplos:
Ejecutar Xeyes como si fuera el usuario busi desde root:
# su busi -c xeyes
Ejecutar Xeyes como si fuera el usuario root desde busi:
$ su root -c xeyes
NOTA: En este caso pedirá la password de root, NO solicitará contraseña cuando usamos al usuario root para lanzar aplicaciones con el UID, GID y shell de otro usuario, lo cual es muy útil para usar en scripts.
Ejemplo de uso práctico: Podemos usar el script para automontaje de dispositivos en rc.local para que lo arranque como un usuario del sistema y no como root. De esta forma se puede tener disponible el montaje automático de dispositivos para el usuario especificado sin necesidad de arrancar ningún comando o arrancar algún entorno gráfico después de inicializar el sistema.
su 'busi' -c 'python /usr/bin/automount.py' &
Una vez arrancado el equipo encontraremos en los procesos la siguiente linea donde se ve el script ejecutado como el usuario busi (En nuestro caso).
# ps aux | grep -i automount
busi 5215 2.0 0.2 7248 4632 pts/4 S 17:59 0:00 python /usr/bin/automount.py
Error al arrancar aplicaciones gráficas:
No protocol specified
Error: Can't open display: :0.0
Se puede ejecutar xhost + para otorgar privilegios gráficos al usuario, dicho error indica que se ha intentado arrancar desde un usuario una aplicación gráfica bajo unas X en las que no tiene permisos. Por defecto, el servidor gráfico X11 solo permite arrancar aplicaciones gráficas al usuario que arranco el servidor gráfico.
NOTA: Realmente el comando xhost + no es recomendable de usar por temas de seguridad, para usarlo debidamente lo mejor es documentarse sobre su uso y sintaxis para poder establecer las premisas de seguridad que cada uno considera apropiadas para su caso.
Posted in How To |
