Cómo cambiar de usuario en Ubuntu: su, sudo y escalada de privilegios
- 9 de noviembre de 2025
- 22:15
- Tutoriales

Introducción
Gestionar varias cuentas de usuario y cambiar entre ellas es un aspecto fundamental de la administración Linux. Ubuntu, la distribución Linux más popular del mundo, ofrece varios métodos para cambiar el usuario activo, cada uno con casos de uso y consecuencias de seguridad distintas. Entender estos mecanismos permite flujos multiusuario eficientes, operaciones de administración seguras y una correcta gestión de privilegios.
Esta guía completa cubre todos los métodos para cambiar de usuario en Ubuntu, desde enfoques básicos en la línea de comandos hasta técnicas avanzadas de escalada de privilegios. Tanto si gestionas sistemas compartidos como tareas administrativas o entornos multi-tenant, dominar el cambio de usuario es clave para usar Ubuntu con soltura.
Entender la gestión de usuarios en Ubuntu
Tipos de cuentas de usuario
Usuarios regulares: Cuentas estándar con privilegios limitados, acceso restringido a archivos e incapacidad para modificar la configuración del sistema.
Usuario root: Superusuario con acceso sin restricciones a todos los recursos del sistema, capaz de cualquier operación incluyendo las peligrosas.
Usuarios del sistema: Cuentas especiales para servicios del sistema (www-data para servidores web, mysql para bases de datos).
Usuarios sudo: Cuentas regulares con privilegios de superusuario delegados mediante la configuración de sudo.
Escalación de privilegios
Why Escalate?: Most administrative tasks require elevated privileges. Rather than logging in as root (dangerous), Ubuntu uses privilege escalation to grant specific elevated permissions temporarily.
Principios: Ejecutar operaciones con los privilegios mínimos necesarios; minimizar el tiempo con acceso elevado; auditar todas las operaciones privilegiadas.
Comando su (Switch User)
Sintaxis básica
su [OPTIONS] [USERNAME]
Switching to Another Usersu john
Prompts for the target user’s password, then switches to that account. The environment remains the user’s original environment (not recommended).Cambiar de usuario con un nuevo entorno
su - john
The hyphen (-) loads the complete environment of the target user, including:
-
Variable HOME apuntando al directorio home del usuario
-
Variable PATH con las rutas de comandos del usuario
-
Archivos de configuración del shell (.bashrc, .profile)
-
Directorio de trabajo cambiado al home del usuario
Best Practice: Always use su - to ensure proper environment configuration.
Cambiar al usuario root
su -
Cambia al usuario root con el entorno completo de root. Solicita la contraseña de root.
Opciones del comando su
-c (Command): Execute single command as another user without full session
su - john -c "ls -la /home/john"-l (Login): Identical to using hyphen; creates login shell
su --login john
-s (Shell): Especificar shell para la sesión
su - john -s /bin/zsh
-m (Preserve environment): Keep current environment while switching
su -m johnComando sudo (Superuser Do)
Sintaxis básica
sudo [OPTIONS] COMMAND
Ejecutar comandos con privilegios elevados
sudo apt-get update # Update package lists (requires root)sudo systemctl restart ssh # Restart SSH servicesudo reboot # Reboot system
Ejecutar un shell root interactivo
sudo -i
Inicia un shell root interactivo sin iniciar sesión como root.
Ejecutar comandos como otro usuario
sudo -u username commandEjecuta el comando con los privilegios del usuario especificado (no solo root).
Opciones del comando sudo
-l (List): Display allowed commands
sudo -l
-k (Invalidate): Clear sudo credentials (requires password on next use)
sudo -k
-p (Prompt): Custom password prompt
sudo -p "Enter admin password: " apt-get update-v (Validate): Extend sudo timeoutsudo -v
-H (Home): Set HOME to target user’s home
sudo -H -u username commandsu – vs su: diferencias clave
| Característica | su | su – |
|---|---|---|
| Entorno | Mantiene el entorno del shell padre | Carga el entorno del usuario destino |
| Variable HOME | Permanece en el home del usuario original | Cambia al home del usuario destino |
| Variable PATH | Puede incluir las rutas del usuario original | Contiene las rutas estándar del usuario destino |
| Config del shell | No carga .bashrc ni .profile | Carga ~/.bashrc y ~/.profile |
| Directorio de trabajo | Permanece en el directorio actual | Cambia al home del usuario |
| Recomendado | Raramente; posible confusión | Siempre para cambiar de usuario |
| Nivel de riesgo | Mayor (entornos mixtos) | Menor (entorno limpio) |
Diferencia con ejemplo
# Con su (BAD)
$ su johnPassword:
$ echo $HOME
/root # Still shows original home!
$ pwd
/path/to/original # Still in original directory# Con su - (GOOD)
$ su - johnPassword:
$ echo $HOME
/home/john # Correct home directory$ pwd
/home/john # Correct directoryCambiar al usuario root
Con su
su -
Password: (enter root password)
root@hostname:~#Con sudo
sudo -i[sudo] password for john: (enter john's password)
root@hostname:~#Diferencias entre su – y sudo -i
| Aspectoo | su – | sudo -i |
|---|---|---|
| Contraseña requerida | Contraseña root | Contraseña del usuario actual |
| Registro | No registrado | Registrado por sudo |
| Registro de auditoría | Mínimo | Registro de auditoría completo |
| Seguridad | Menor (requiere compartir contraseña root) | Mayor (responsabilidad individual) |
| Configuración empresarial típica | Desaconsejado | Recommended |
Security Note: Modern Ubuntu systems typically don’t require root password; instead, sudoers are granted authority through sudo configuration.
Ejecutar comandos como otro usuario
Ejecutar un solo comando
sudo -u apache /usr/bin/apache2ctl restartsu - testuser -c "python /home/testuser/script.py"
Ejecutar múltiples comandos
sudo bash -c "echo 'Line 1' > /tmp/file; cat /tmp/file"
Ejecutar comandos preservando el directorio actual
sudo -u john pwd # Prints john's home (working directory changed)sudo -u john -C pwd # Prints current directory (with -C flag)Cambiar la contraseña de usuario
Cambiar la propia contraseña
passwdSolicita la contraseña actual y luego la nueva contraseña (dos veces para confirmar).
Cambiar la contraseña de otro usuario (requiere root)
sudo passwd john
No requiere contraseña actual; solicita la nueva contraseña (autoridad root).
Establecer política de expiración
sudo chage -l john # View password aging infosudo chage -M 90 john # Force password change every 90 dayssudo chage -d 0 john # Force password change on next login
Permisos y grupos de usuario
Ver grupos de usuarios
groups john # Show groups current user belongs togroups # Show own groupsid john # Detailed UID, GID, groupsAgregar usuario al grupo
sudo usermod -aG groupname username
Example: Add user to sudo group
sudo usermod -aG sudo john
Eliminar usuario del grupo
sudo deluser username groupname
Crear nuevo usuario
sudo useradd -m -s /bin/bash newuser
sudo passwd newuser
Options:
-
-m: Create home directory -
-s: Specify shell -
-G: Asignar a grupos
Ejemplos prácticos
Example 1: Administrative Task with Escalación de privilegios
#!/bin/bash
# Install software update as regular user with privilege escalation
sudo apt-get updatesudo apt-get upgrade -y
echo "System update complete"
Ejemplo 2: Ejecutar tareas del servidor web
# Stop web server as specific service user
sudo -u www-data /opt/webapp/stop.sh# Check web server permissions as www-data
sudo -u www-data ls -la /var/www/htmlEjemplo 3: Mantenimiento de base de datos
# Backup database as specific user
sudo -u mysql mysqldump -u root -p database_name > backup.sql
# Run database optimization
sudo -u mysql mysql -u root -p -e "OPTIMIZE TABLE table_name;"
Ejemplo 4: Gestión de usuarios en lote
#!/bin/bash# Create multiple usersfor user in user1 user2 user3; dosudo useradd -m -s /bin/bash "$user"echo "Please set password for $user:"sudo passwd "$user"done# Add all to sudo groupfor user in user1 user2 user3; dosudo usermod -aG sudo "$user"doneConsideraciones de seguridad
Seguridad de contraseñas
Contraseña root: Manténgala segura; nunca la comparta con personas no confiables
Configuración de sudo: Delegue privilegios específicos en lugar del acceso root completo
Caducidad de contraseñas: Imponga cambios periódicos de contraseña
# Configure password agingsudo chage -M 90 -m 1 -W 7 username
# Forces change every 90 days, minimum 1 day between changes, 7-day warningAuditoría y registro
All sudo commands are logged:
sudo grep COMMAND /var/log/auth.log
View detailed sudo history:
sudo journalctl _COMM=sudoRestricting Escalación de privilegios
Configure sudoers file safely:
sudo visudo # Always use visudo for editing sudoers
Configuración de sudoers de ejemplo (limiting what john can run):
john ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginxjohn ALL=(ALL) /usr/bin/apt-getTiempo de espera de sesión
# Set sudo timeoutsudo -v # Extend timeoutsudo -k # Invalidate sudo credentialsPor qué la infraestructura remota usa el cambio de usuario
La infraestructura RDP y SSH frecuentemente requiere:
-
Múltiples usuarios administrativos con diferentes niveles de privilegios
-
Cuentas de servicio para procesos automatizados
-
Registros de auditoría para cumplimiento (registro sudo)
-
Escalación de privilegios para tareas administrativas
Gestión de infraestructura mediante RDP.Monster
Managing Ubuntu systems remotely requires robust, secure access:
Acceso SSH para ejecución de comandos
-
Ejecutar comandos de cambio de usuario de forma remota
-
Administración automatizada mediante scripts
-
Control total sobre la gestión de usuarios
Soporte para múltiples cuentas de usuario
-
Crear usuarios administrativos
-
Delegar privilegios apropiadamente
-
Mantener registros de auditoría
Administración remota segura
-
Cifrado SSH para todas las operaciones de cambio de usuario
-
Autenticación basada en claves para acceso programático
-
Registro y monitorización integrales
Conclusión
El cambio de usuario y la escalación de privilegios son habilidades fundamentales de administración de Ubuntu. Comprender las diferencias entre su, sudo y la gestión de contraseñas permite una administración eficaz de sistemas multiusuario manteniendo la seguridad mediante una delegación adecuada de privilegios y registros de auditoría.
Las mejores prácticas modernas de Ubuntu favorecen claramente sudo sobre su para la escalación de privilegios, permitiendo responsabilidad y registro completo mientras se minimiza el uso compartido de la contraseña root. La configuración adecuada de sudoers delegando privilegios específicos proporciona un excelente equilibrio de seguridad entre usabilidad y acceso control.
Managing complex Ubuntu infrastructure requiring sophisticated user management and secure administrative access? RDP.Monster provides SSH-based Ubuntu VPS solutions enabling seamless user management and privilege escalation across your infrastructure. Deploy professionally-managed Ubuntu systems today.
Hosting VPS Ubuntu potente
Obtén control total y rendimiento increíble con nuestros VPS Linux. Perfecto para alojar aplicaciones, administrar servidores y optimizar tu workflow.
Servidores dedicados de alto rendimiento
¿Necesitas máximo control y potencia? Nuestros servidores dedicados ofrecen un rendimiento inigualable para tareas exigentes.
Preguntas frecuentes
¿Debo usar su o sudo?
Permite trazabilidad, exige contraseñas individuales y proporciona pistas de auditoría completas.
¿Por qué no funciona mi comando su?
Try sudo -u username instead if you have sudo privileges.
¿Puedo cambiar de usuario sin contraseña?
Con su siempre necesitas la contraseña del usuario destino.




