Cambiar de usuario en Linux y *BSD desde línea de comandos
En los sistemas operativos de la familia Unix, el comando “su” nos permite cambiar de usuario o volvernos superusuarios (root). Esta herramienta es muy útil cuando necesitamos realizar tareas como si fuéramos otro usuario, por ejemplo, correr algún comando a nombre del servidor Web Apache. Para ello, es necesario pasar al usuario “www-data” en Debian y derivados.
En este artículo, exploraremos cómo cambiar de usuario desde línea de comandos en Linux y *BSD, proveyendo un entorno para la nueva sesión (variables, aliases, etc.). Además, veremos cómo preservar el entorno de la sesión actual en la nueva sesción.
Sintaxis básica del comando “su”
———————————
La sintaxis básica del comando “su” es la siguiente:
“`
su [opciones] [usuario]
“`
Donde “usuario” es el nombre del usuario al que deseamos cambiar. Si no se especifica ninguna opción, “su” pasa a superusuario.
Pasar a otro usuario
———————–
Para pasar al usuario “www-data”, simplemente ejecutar:
“`bash
su www-data
“`
Esto abre una nueva sesión (en una subshell) a nombre del usuario “www-data”, y la sesión original como root queda en segundo plano.
Para finalizar la sesión como “www-data” y volver a la sesión original, simplemente ejecutar:
“`bash
exit
“`
Cambiar el entorno de la sesión
—————————–
En general, es deseable contar con el entorno (variables, aliases, etc.) al cambiar de usuario. Esto es simular un login completo. Utilizaremos la variable de entorno PATH como ejemplo para entender qué sucede si no cargamos el entorno.
Al ejecutar el comando “su” sin opciones, la sesión se abre en una subshell sin cargar el entorno del perfil. Para cargar el entorno (perfil), es necesario agregar la opción “-” (o “-l”):
“`bash
su – www-data
“`
Esto carga el entorno del perfil de bash para el usuario “www-data”.
Además, es posible preservar el entorno de la sesión actual (root) en la nueva sesión (www-data) utilizando la opción “-m” (tanto en GNU/Linux como en *BSD). La sintaxis sería la siguiente:
“`bash
su -m www-data
“`
Esto preserva el entorno de la sesión actual en la nueva sesión como “www-data”.
Referencias
————
* [man su](http://www.manualbrain.com/linux/man/1/su)
* [man bash](http://www.manualbrain.com/linux/man/1/bash)
* [man sh](http://www.manualbrain.com/linux/man/1/sh)
* [man whoami](http://www.manualbrain.com/linux/man/1/whoami)
* [man groups](http://www.manualbrain.com/linux/man/1/groups)
* [man id](http://www.manualbrain.com/linux/man/1/id)
Conclusión
———-
En este artículo, hemos explorado cómo cambiar de usuario en Linux y *BSD desde línea de comandos, proveyendo un entorno para la nueva sesión (variables, aliases, etc.). Además, hemos visto cómo preservar el entorno de la sesión actual en la nueva sesión. El comando “su” es una herramienta muy útil en el día a día de los sistemas operativos de la familia Unix.