Introducción
En el mundo de Linux, la terminal es una de las herramientas más poderosas para administrar el sistema. A menudo necesitamos ejecutar acciones con los privilegios de otro usuario, ya sea para realizar tareas de mantenimiento, probar configuraciones o acceder a archivos restringidos. El comando su (switch user) permite cambiar de usuario directamente desde la línea de comandos sin cerrar la sesión actual. En este artículo exploraremos su funcionamiento, sintaxis, opciones más comunes y algunas recomendaciones de seguridad para usarlo de forma responsable.
¿Qué hace el comando su?
El comando su inicia una nueva shell bajo la identidad de otro usuario. Por defecto, si no se especifica un nombre de usuario, su cambia al usuario root. A diferencia de sudo, que ejecuta un solo comando con privilegios elevados, su abre una sesión interactiva completa, lo que permite ejecutar varios comandos sucesivamente bajo la misma identidad.
Sintaxis básica
La forma más simple es:
su [nombre_de_usuario]
Si se omite nombre_de_usuario, el sistema asume root. Tras ejecutar el comando, se solicitará la contraseña del usuario de destino. Una vez autenticado, se abrirá una nueva shell y el prompt cambiará para reflejar el nuevo usuario.
Opciones más usadas
-lo--login: inicia una shell de inicio de sesión, lo que significa que se leen los archivos de perfil del usuario (.profile,.bashrc, etc.) y se establece el entorno como si hubiera iniciado sesión normalmente.-ccomando o--command comando: ejecuta únicamente el comando especificado y luego vuelve a la shell original, sin mantener una sesión interactiva.-sshell o--shell shell: indica qué shell se debe usar (por ejemplo,/bin/zsh) en lugar de la predeterminada del usuario.-m,-po--preserve-environment: conserva las variables de entorno del usuario actual en lugar de cargar el entorno del usuario destino.--helpy--version: muestran la ayuda y la versión del comando.
Ejemplos prácticos
-
- Cambiar a root y obtener una shell de inicio de sesión:
su -l
-
- Cambiar al usuario
juany ejecutar un solo comando:
- Cambiar al usuario
su -c "ls -la /home/juan" juan
-
- Iniciar una shell como
juanconservando el entorno actual:
- Iniciar una shell como
su -p juan
-
- Especificar una shell diferente:
su -s /bin/zsh juan
Diferencias entre su y sudo
Aunque ambos permiten realizar acciones con privilegios de otro usuario, su comportamiento es distinto:
- su cambia completamente de usuario y abre una nueva shell, requiriendo la contraseña del usuario de destino.
- sudo ejecuta un solo comando con los privilegios de otro usuario (usualmente root) usando la contraseña del usuario actual, siempre que esté autorizado en el archivo
/etc/sudoers. - En entornos donde se busca minimizar la exposición de contraseñas de root,
sudosuele ser preferible porque no necesita conocer la clave de root. - Cuando se necesita una sesión prolongada bajo otro usuario (por ejemplo, para probar varios scripts),
suresulta más cómodo.
Buenas prácticas de seguridad
- Utiliza
su -lsiempre que necesites un entorno limpio y completo; esto evita que variables de entorno inesperadas influyan en la sesión. - Evita dejar sesiones de
suabiertas en terminales sin supervisión; finalízalas conexitoCtrl+Dcuando termines. - Prefiere
sudopara tareas puntuales y reservasupara casos donde realmente necesites una shell interactiva. - Revisa el archivo
/etc/pam.d/supara limitar quién puede usarsuhacia root (por ejemplo, mediante el grupowheel). - Monitoriza los intentos de
sufallidos con herramientas comoauth.logojournalctlpara detectar posibles ataques de fuerza bruta. - Si tu distribución lo permite, desactiva el acceso directo a root mediante
suy obliga a usarsudoúnicamente.
Conclusión
El comando su es una herramienta esencial para la administración de sistemas Linux, permitiendo cambiar de usuario de forma rápida y flexible. Conocer sus opciones y entender cuándo es más adecuado que sudo ayuda a trabajar de manera más eficiente y segura. Aplicando las buenas prácticas descritas, podrás aprovechar todo su potencial sin comprometer la integridad de tu sistema. ¡Practica en un entorno de prueba y incorpora su en tu flujo de trabajo diario!