Comando sudo

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 root en lugar de la contraseña del usuario local al que se le solicita la clave en el prompt de sudo.
  • Intentar usar sudo sin 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

  • su
  • visudo
  • whoami
  • groups
  • journalctl

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

  1. Ejecuta el comando sudo -l para comprobar qué privilegios o comandos tiene autorizados tu usuario actual en la máquina.
  2. Compara el comportamiento al introducir tu clave con sudo frente a la introducción de la clave de root al usar el comando su -. ¿De qué usuario te pide la contraseña en cada caso?
  3. Ejecuta una orden inocua precedida de sudo (como sudo whoami) para comprobar que la elevación de privilegios funciona correctamente.
  4. Inicia una shell interactiva de administración utilizando sudo -i y verifica con whoami que el usuario actual ha pasado a ser root. Sal de ella con exit.
  5. Investiga dónde se almacenan los registros de auditoría de los comandos ejecutados con sudo (puedes consultar el contenido de /var/log/auth.log en distribuciones basadas en Debian/Ubuntu).
  6. Si dispones de un entorno Windows, compara el uso de sudo con 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.