Comando sudo
El comando sudo (superuser do) es una herramienta estándar de seguridad en sistemas Unix y Linux que permite a un usuario autorizado ejecutar un comando con los privilegios de otro usuario, habitualmente el superusuario (root). Es el pilar fundamental de la administración moderna de sistemas, ya que evita la necesidad de iniciar sesión o compartir la contraseña global de administrador.
| Categoría | Usuarios y permisos |
|---|---|
| Disponible en | Linux / Unix (sudo) |
| Equivalente en Windows | runas /user:Administrator, elevación de UAC (clic derecho -> Ejecutar como administrador) |
| Sustituye a | Uso continuado de su o sesiones compartidas como root. |
| ¿Requiere permisos de administrador? | No inicialmente por parte del usuario común, pero el usuario debe estar autorizado en el archivo de configuración /etc/sudoers. |
¿Qué significa su nombre?
SUDO son las siglas de SuperUser DO (Hacer como Superusuario).
Fue diseñado originalmente a finales de los años 80 en la Universidad de Boulder (Colorado) para permitir otorgar permisos específicos a ciertos usuarios sin comprometer la clave de la cuenta principal de administración.
¿Para qué sirve?
El comando sudo sirve para elevar privilegios de forma puntual y controlada. En lugar de cambiar permanentemente a la cuenta de root mediante su -, el usuario ejecuta únicamente la orden que requiere permisos de administrador anteponiendo sudo.
Además, registra de forma auditable cada acción en los logs del sistema (como /var/log/auth.log o mediante el comando journalctl), lo que permite saber exactamente qué usuario ejecutó qué comando y en qué momento.
Sintaxis
sudo [opciones] [comando]
Las opciones y modificadores más habituales son:
| Opción | Descripción |
|---|---|
-i o -s |
Inicia una shell interactiva con privilegios de root (o del usuario especificado). |
-u [usuario] |
Ejecuta el comando con los privilegios de un usuario diferente a root (ej. postgres o www-data). |
-l |
Lista los privilegios y comandos que el usuario actual tiene permitidos ejecutar mediante sudo. |
-k |
Invalida la caché de autenticación, obligando a volver a pedir la contraseña en la siguiente ejecución. |
Comandos más utilizados
| Comando | Descripción |
|---|---|
sudo apt update |
Ejecuta un comando administrativo específico (como actualizar paquetes). |
sudo -i |
Abre una sesión interactiva completa como superusuario cargando su entorno. |
sudo -u www-data bash |
Cambia temporalmente la sesión a otro usuario del sistema por motivos de servicio. |
sudo visudo |
Edita de forma segura el archivo de configuración de políticas de sudo (/etc/sudoers). |
Equivalencia con otros sistemas
| Acción | Linux antiguo | Linux actual | Windows |
|---|---|---|---|
| Ejecutar como administrador | su -c "..." |
sudo [comando] |
runas /user:Administrator "..." |
| Abrir consola de administración | su - |
sudo -i / sudo -s |
CMD / PowerShell (Ejecutar como Administrador) |
| Comprobar permisos asignados | Revisar /etc/passwd |
sudo -l |
whoami /priv |
Ejemplos
Actualizar la lista de paquetes del sistema instalando software como administrador
sudo apt update && sudo apt upgrade
Abrir una sesión interactiva completa de superusuario
sudo -i
Consultar qué comandos tiene permitido ejecutar nuestro usuario actual
sudo -l
Ejecutar un comando como un usuario distinto de root (por ejemplo, el servicio web)
sudo -u www-data touch /var/www/html/archivo.txt
Ejemplo de salida
[sudo] contraseña para usuario:
Hit:1 http://archive.ubuntu.com/ubuntu focal InRelease
Get:2 http://archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
...
¿Cómo interpretar la salida?
- [sudo] contraseña para usuario: solicitud de autenticación donde se debe introducir la contraseña del usuario actual (no la de root). Por seguridad no se muestran asteriscos mientras se escribe.
- Salida posterior del comando: una vez validado el acceso, se ejecuta la orden solicitada exactamente igual que si se tuviera una sesión de root abierta.
Errores habituales
- Introducir la contraseña de
rooten lugar de la contraseña del usuario local al que se le solicita la clave en el prompt de sudo. - Intentar usar
sudosin estar previamente incluido en el grupo de usuarios autorizados (lo que genera el clásico aviso de que el usuario "no está en el archivo sudoers y este incidente será reportado").
Conceptos relacionados
- Archivo
/etc/sudoers - Comando
visudo - Privilegios granulares
- Trazabilidad y auditoría (Logs)
- Grupo wheel / sudo
Comandos relacionados
suvisudowhoamigroupsjournalctl
Curiosidades
El archivo de configuración de sudo se gestiona obligatoriamente a través del comando especial visudo. Esto no es casualidad: visudo realiza comprobaciones de sintaxis en tiempo de ejecución antes de guardar los cambios, evitando que un administrador cometa un error tipográfico que le deje sin acceso de superusuario al sistema.
Prácticas propuestas
- Ejecuta el comando
sudo -lpara comprobar qué privilegios o comandos tiene autorizados tu usuario actual en la máquina. - Compara el comportamiento al introducir tu clave con
sudofrente a la introducción de la clave de root al usar el comandosu -. ¿De qué usuario te pide la contraseña en cada caso? - Ejecuta una orden inocua precedida de sudo (como
sudo whoami) para comprobar que la elevación de privilegios funciona correctamente. - Inicia una shell interactiva de administración utilizando
sudo -iy verifica conwhoamique el usuario actual ha pasado a ser root. Sal de ella conexit. - Investiga dónde se almacenan los registros de auditoría de los comandos ejecutados con sudo (puedes consultar el contenido de
/var/log/auth.logen distribuciones basadas en Debian/Ubuntu). - Si dispones de un entorno Windows, compara el uso de
sudocon la elevación de privilegios que solicita el sistema mediante el Control de Cuentas de Usuario (UAC).
Consejo: Acostúmbrate a utilizar sudo en lugar de su - para la ejecución de tareas rutinarias de administración; incrementa notablemente la seguridad y deja un registro claro de qué comandos se han ejecutado en el sistema.