Comando Linux su
Manual completo de comandos Linux
El comando Linux su (cuyo significado completo en inglés es: switch user) se utiliza para cambiar la identidad de usuario. Excepto para root, se debe ingresar la contraseña de dicho usuario.
Permiso de uso: todos los usuarios.
Sintaxis
su [选项] [用户名]
Por ejemplo:
su # 切换到root,保持当前环境 su - # 切换到root,加载root的完整环境 su root # 明确指定切换到root用户
Cambiar a otro usuario:
su username su - username su -l username
Descripción de parámetros:
-o-lo--login: Proporciona un entorno similar al de un inicio de sesión directo-c command: Ejecuta el comando especificado y luego sale-s shell: Especifica el shell que se va a utilizar-po--preserve-environment: Conserva las variables de entorno actuales
Ejemplos
Ejecutar temporalmente un comando como root:
su -c "apt update && apt upgrade" root
Cambiar a un usuario de servicio para depurar:
su - www-data su -s /bin/bash www-data # 如果默认shell是/bin/false
Uso en scripts:
su - postgres -c "psql -c 'SELECT version();'"
Salir de la sesión su:
exit # 退出当前su会话 Ctrl+D # 同样可以退出
Diferencia entre su y su -
su(Cambio sin inicio de sesión):
- Mantiene las variables de entorno del usuario actual
- El directorio de trabajo no cambia
- Las variables de entorno como PATH no cambian
su -(Cambio con inicio de sesión):
- Carga el entorno completo del usuario de destino
- Cambia al directorio home del usuario de destino
- Restablece variables de entorno como PATH, HOME
- Ejecuta el script de inicio de sesión del usuario de destino
Comparación de ejemplos
# 当前用户:john,工作目录:/home/john pwd # /home/john echo $HOME # /home/john su root pwd # /home/john (目录未变) echo $HOME # /home/john (环境未变) exit su - root pwd # /root (切换到root家目录) echo $HOME # /root (完整环境) exit
Diferencia entre su vs sudo
| Característica | su | sudo |
|---|---|---|
| Contraseña requerida | Contraseña del usuario de destino | Contraseña del usuario actual |
| Duración de la sesión | Hasta salir manualmente con exit | Comando único o caché de corta duración |
| Complejidad de configuración | Simple | Requiere configurar sudoers |
| Seguridad | Requiere conocer la contraseña de root | Control de permisos más granular |
| Auditoría | Limitada | Registros más detallados |
El comando su es simple y directo, pero en la administración de sistemas moderna, sudo suele ser la opción más recomendada porque ofrece mejor seguridad y capacidad de auditoría.
Precauciones de seguridad
- Evitar compartir la contraseña de root
- Usar
su -Asegurar el cambio completo de entorno - Salir de la sesión su a tiempo
- Priorizar el uso de sudo en entornos de producción
- Monitorear los registros de uso de su (generalmente en /var/log/auth.log)