1. Introducción: ¿Qué es sudo?
Significado básico y función de sudo
En sistemas Linux y Unix, «sudo» es uno de los comandos más importantes.
«sudo» es la abreviatura de «superuser do» y es una herramienta que permite ejecutar comandos con privilegios de administrador (root) de manera temporal. Normalmente, los usuarios comunes no tienen permisos para realizar operaciones que afectan a todo el sistema (como instalar paquetes o cambiar configuraciones del sistema). Sin embargo, con el comando sudo
, es posible ejecutar dichas acciones privilegiadas de forma limitada.
Por ejemplo, al ejecutar el siguiente comando, se ejecuta apt con privilegios de root:
sudo apt update
De esta manera, sudo cumple la función de «un mecanismo seguro para utilizar privilegios administrativos», equilibrando seguridad y usabilidad del sistema.
Diferencias con el comando su
Existe un comando similar llamado su
, pero entre ambos hay diferencias claras.
su
es la abreviatura de «substitute user» y sirve para cambiar a otro usuario (generalmente root). Al usarsu
, el sistema opera como si se hubiera iniciado sesión completamente como ese usuario.- En cambio,
sudo
permite ejecutar comandos con privilegios de administrador de forma temporal sin cambiar de usuario.
En resumen, su
cambia la sesión entera, mientras que sudo
eleva permisos por comando. Esta diferencia también es importante en términos de seguridad: sudo
facilita el control de registros de operaciones y hoy en día es el método estándar en la mayoría de las distribuciones.
Distribuciones Linux que usan sudo
En muchas distribuciones de Linux, sudo
se usa por defecto. En particular, en las siguientes:
- Basadas en Ubuntu (Ubuntu, Linux Mint, etc.)
→ No se inicia sesión directamente como root, sino que se gestiona mediante sudo. - Basadas en Debian
→ Puede ser necesario habilitar sudo posteriormente, pero es ampliamente recomendado por políticas de seguridad. - Fedora, CentOS, Red Hat
→ Aunque es posible usar root, el uso de sudo también es habitual.
En especial en Ubuntu, la cuenta root está deshabilitada por defecto y toda la administración se hace a través de sudo. Por eso, entender sudo es esencial para usuarios de Ubuntu.
¿Por qué se busca «sudo sudo»?
La búsqueda «sudo sudo» puede parecer redundante, pero suele tener los siguientes motivos:
- Principiantes que quieren entender el significado o uso de
sudo
y lo repiten para enfatizar. - Problemas como
sudo: sudo: command not found
que llevan a usuarios a buscar explicaciones. - Dudas al ver
sudo
usado dos veces en scripts o tuberías.
Conociendo estas intenciones, en los siguientes apartados se explicará en detalle cómo usar sudo correctamente, configurarlo y resolver problemas comunes.
2. Uso básico del comando sudo
Sintaxis básica de sudo
La sintaxis básica de sudo
es muy simple.
sudo [opciones] comando
Por ejemplo, si deseas actualizar la información de los paquetes del sistema:
sudo apt update
Este comando significa ejecutar «apt update» con privilegios de root.
Mecanismo de autenticación y caché de contraseña
La primera vez que se usa sudo
, o después de un tiempo determinado, el sistema pedirá la contraseña del usuario. Esto es una medida de seguridad que evita errores y usos indebidos por terceros.
Después de introducir la contraseña, se almacena en caché durante un tiempo limitado (en Ubuntu, por defecto 5 minutos). Durante ese periodo, sudo
puede usarse sin volver a introducir la contraseña. Este intervalo puede modificarse en el archivo sudoers
.
Opciones más comunes
sudo
ofrece varias opciones que lo hacen más flexible y práctico. Estas son algunas de las más utilizadas:
-u (ejecutar como otro usuario)
Por defecto, se ejecuta como root. Con la opción -u
se puede ejecutar como cualquier usuario.
sudo -u www-data whoami
El resultado será www-data
, confirmando que el comando se ejecutó como dicho usuario.
-s (iniciar un shell)
Con este comando se abre un shell temporal con privilegios de root:
sudo -s
Debe usarse con cuidado, ya que toda acción en modo root puede afectar al sistema.
-i (iniciar sesión como root)
Esta opción abre un entorno root completo, con variables de entorno cargadas como si se hubiera iniciado sesión directamente.
sudo -i
-l (listar comandos permitidos)
Permite comprobar qué comandos puede ejecutar un usuario con sudo
:
sudo -l
Es útil para revisar permisos y restricciones configuradas.
Puntos clave para principiantes
- Debe haber un espacio después de sudo. Ejemplo:
sudoapt
es incorrecto. - Para ejecutar varios comandos, deben separarse con punto y coma o agruparse con comillas (
"
o'
). - No se recomienda ejecutar aplicaciones gráficas con
sudo
(ejemplo:sudo gedit
), ya que pueden corromper archivos de configuración.
3. El archivo sudoers y el control de acceso
¿Qué es el archivo sudoers?
El comportamiento de sudo
está definido en el archivo /etc/sudoers
. Este archivo indica qué usuarios pueden ejecutar qué comandos con sudo.
Por ejemplo, se puede configurar para que un usuario ejecute solo ciertos comandos con sudo. Esto permite aplicar el principio de privilegios mínimos, otorgando únicamente los permisos necesarios.
Edición segura con visudo
No se debe editar /etc/sudoers
directamente con un editor de texto.
Un error de sintaxis puede dejar inservible sudo, complicando la recuperación. Por eso se recomienda usar visudo
, que valida la sintaxis al guardar.
sudo visudo
Gracias a la comprobación automática, la edición es más segura.
Sintaxis básica y ejemplos
La sintaxis del archivo sudoers
es:
usuario host = (usuario de ejecución) comando
Ejemplo:
alice ALL=(ALL:ALL) ALL
Esto significa que el usuario «alice» puede ejecutar cualquier comando como cualquier usuario en cualquier host.
Ejemplo con restricciones:
bob ALL=(ALL) /usr/bin/systemctl restart nginx
En este caso, «bob» solo puede reiniciar nginx con sudo.
Control por grupos: grupo sudo
En distribuciones como Ubuntu, los usuarios del grupo sudo
tienen acceso a sudo:
%sudo ALL=(ALL:ALL) ALL
Para añadir un usuario al grupo sudo:
sudo usermod -aG sudo nombre_usuario
Uso del parámetro NOPASSWD
Para omitir la contraseña en un comando específico, se puede usar la opción NOPASSWD
:
alice ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
Esto permite a «alice» reiniciar nginx sin introducir contraseña. Advertencia: aumenta el riesgo de seguridad, por lo que debe limitarse a comandos específicos.
4. Uso avanzado de sudo
Ejecutar comandos como un usuario específico
Por defecto, sudo
ejecuta comandos como root. Sin embargo, con las opciones adecuadas se puede ejecutar como otro usuario.
Por ejemplo, si deseas ejecutar un comando como el usuario «www-data» (usado por servidores web):
sudo -u www-data whoami
El resultado será www-data
, confirmando que el comando se ejecutó como dicho usuario.
Este método es útil para probar entornos o permisos de distintos usuarios.
Combinación con redirecciones y tuberías
Un error común es usar sudo
con redirecciones (>
) o tuberías (|
), ya que no siempre funciona como se espera.
Ejemplo incorrecto:
sudo echo "test" > /etc/test.conf
Aquí, echo
se ejecuta con sudo, pero la redirección se hace con permisos de usuario normal, causando error.
La forma correcta es usar tee
:
echo "test" | sudo tee /etc/test.conf
De esta forma, la escritura en el archivo también se realiza con permisos de root.
Uso de sudo en scripts
Si un script contiene comandos que requieren permisos administrativos, se debe añadir sudo
explícitamente antes de cada uno.
No se recomienda ejecutar todo el script con sudo, ya que es más seguro aplicarlo solo en las partes necesarias.
Ejemplo (install.sh):
#!/bin/bash
echo "Installing package..."
sudo apt install -y nginx
También es habitual comprobar si el script se ejecuta como root desde el inicio:
if [ "$EUID" -ne 0 ]; then
echo "Este script debe ejecutarse como root"
exit 1
fi
Con este tipo de validación, los scripts se ejecutan de forma más segura.
Comandos útiles con sudo
sudo !!
→ Repite el último comando ejecutado, pero con sudo.
apt update
sudo !!
El resultado es equivalente a ejecutar sudo apt update
.
sudo -k
→ Limpia manualmente la caché de contraseña de sudo. Útil antes de dejar el sistema desatendido.sudo -v
→ Extiende el tiempo de sesión de sudo. Práctico en tareas largas.
5. Seguridad y buenas prácticas
Respetar el principio de privilegios mínimos
El objetivo de sudo
es operar con los permisos mínimos necesarios.
No se trata de ser root todo el tiempo, sino de usar privilegios elevados solo cuando sea necesario.
Buenas prácticas:
- Permitir solo comandos específicos con sudo (ejemplo:
systemctl restart nginx
) - Evitar el uso indiscriminado de NOPASSWD
- Gestionar usuarios con permisos mediante grupos (ejemplo:
sudo
)
Registro y auditoría
sudo
registra los comandos ejecutados. Esto permite verificar qué usuario ejecutó qué acción y cuándo.
Los registros más comunes son:
/var/log/auth.log
(Ubuntu, Debian)journalctl
(distribuciones con systemd)
Ejemplo en Ubuntu:
grep 'sudo' /var/log/auth.log
O bien:
journalctl _COMM=sudo
Esto hace posible rastrear acciones sospechosas o errores, fundamental en la administración de servidores.

Vulnerabilidades conocidas de sudo (CVE-2021-3156)
Aunque sudo
es una herramienta muy confiable, también ha presentado vulnerabilidades graves en el pasado.
Un caso famoso fue la CVE-2021-3156 (Baron Samedit), que permitía a un usuario normal obtener privilegios de root en determinadas condiciones.
Aunque ya fue corregida, este caso demuestra la importancia de:
- Mantener sudo y paquetes críticos siempre actualizados
- Revisar regularmente las bases de datos de vulnerabilidades
Alternativa a sudo: doas
En algunos entornos minimalistas o con enfoque en seguridad se usa doas como alternativa a sudo.
doas
es una herramienta originaria de OpenBSD, más simple de configurar y considerada más segura en ciertos casos.
Ejemplo:
doas apt update
Su configuración se encuentra en /etc/doas.conf
. Ejemplo de sintaxis:
permit nopass :wheel
Esto permite a los usuarios del grupo wheel usar doas sin contraseña.
Sin embargo, no todas las distribuciones incluyen doas por defecto, por lo que requiere instalación y configuración manual.
La elección entre sudo
y doas
depende de las necesidades del entorno.
6. Errores comunes y solución de problemas
Error: «El usuario no está en el archivo sudoers»
nombre_usuario is not in the sudoers file. This incident will be reported.
Este error aparece cuando el usuario actual no tiene permisos para usar sudo.
Generalmente ocurre con cuentas nuevas que aún no forman parte del grupo sudo
.
Solución:
- Iniciar sesión con otro usuario que tenga privilegios root
- Añadir el usuario al grupo
sudo
sudo usermod -aG sudo nombre_usuario
Después de cerrar sesión y volver a entrar, el usuario podrá usar sudo.
Error con redirecciones o tuberías: «Permission denied»
Permission denied
Este error ocurre cuando se usa sudo
con redirecciones o tuberías, pero la parte de escritura se ejecuta sin privilegios.
Ejemplo incorrecto:
sudo echo "test" > /etc/test.conf
En este caso, la redirección la realiza el usuario normal, no root.
Soluciones correctas:
echo "test" | sudo tee /etc/test.conf
O bien, para varias líneas:
sudo bash -c 'echo "line1" > /etc/test.conf'
Error por editar mal el archivo sudoers
Si se edita el archivo sudoers
directamente y hay un error de sintaxis, sudo puede quedar inutilizable.
Solución:
- Iniciar sesión como root (en Ubuntu puede estar deshabilitado por defecto)
- Reparar con el comando:
pkexec visudo
Si pkexec
no está disponible, es necesario iniciar en modo recuperación y corregir /etc/sudoers
.
Para evitar problemas, siempre usar:
sudo visudo
Error: «sudo: command not found»
sudo: command not found
Esto ocurre si sudo
no está instalado o no está en el PATH
.
Solución:
- Iniciar sesión como root e instalar sudo:
apt update
apt install sudo
- O ejecutar sudo desde su ruta absoluta:
/usr/bin/sudo ls
7. FAQ: Preguntas frecuentes sobre sudo
Q1. ¿Cuál es la diferencia entre sudo y su?
A:sudo
ejecuta un comando específico con privilegios temporales, mientras que su
cambia completamente al usuario root u otro usuario.
sudo
: eleva permisos por comandosu
: cambia la sesión entera a otro usuario
Por seguridad y trazabilidad, hoy en día se recomienda usar sudo
.
Q2. ¿Necesito la contraseña de root para usar sudo?
A:
No. Normalmente se introduce la contraseña del propio usuario, no la de root.
Esto reduce riesgos de filtración y facilita registrar qué usuario ejecutó cada acción.
Q3. ¿Dónde se guardan los registros de sudo?
A:
Depende de la distribución:
- Ubuntu/Debian:
/var/log/auth.log
- RHEL/CentOS:
/var/log/secure
- Entornos con systemd:
journalctl _COMM=sudo
Q4. ¿Qué pasa si edité mal el archivo sudoers?
A:
Siempre usa sudo visudo
para evitar errores.
Si sudo deja de funcionar, puedes:
- Iniciar sesión como root y corregir con visudo
- En Ubuntu: entrar en «modo recuperación» como root
- Usar
pkexec visudo
si polkit está disponible
Q5. ¿Se puede usar root sin sudo?
A:
Sí, pero no se recomienda por seguridad.
- Con
su
, cambiando a root (requiere la contraseña de root) - Iniciando sesión directamente como root (deshabilitado por defecto en Ubuntu)
El método más seguro sigue siendo usar sudo
.
Q6. ¿Puedo iniciar aplicaciones gráficas con sudo?
A:
No es recomendable. Por ejemplo, sudo gedit
puede corromper archivos de configuración al ejecutarse como root.
En su lugar, se sugiere usar pkexec
(si está disponible):
pkexec gedit
8. Conclusión
Comprender el papel de sudo
En este artículo hemos explicado qué es sudo, cómo usarlo, configurarlo, aplicarlo en scripts, sus mejores prácticas, errores comunes y preguntas frecuentes.
sudo
no es solo un prefijo para comandos, sino un mecanismo clave de seguridad que permite administrar sistemas de forma segura.
El uso adecuado previene problemas
Puntos clave:
- Aplicar el principio de privilegios mínimos
- Usar
visudo
para editar la configuración - Revisar registros y auditorías
- Tener cuidado al usarlo con tuberías y redirecciones
- Evitar usarlo con aplicaciones gráficas
Elige el estilo de administración que mejor se adapte
Linux es flexible: se puede usar sudo
o alternativas como doas
.
Lo importante es elegir la herramienta adecuada según la política de seguridad y el entorno.
Reflexión final
Entender sudo
es un primer paso esencial para comprender Linux.
No lo veas solo como un comando, sino como una llave que protege tu sistema.
Con el conocimiento adecuado, tus comandos serán más seguros y confiables.