Cómo usar sudo en Linux y administrarlo con seguridad

Última actualización: 22/03/2026
Autor: Isaac
  • El comando sudo permite ejecutar acciones administrativas puntuales sin iniciar sesión como root, reduciendo riesgos.
  • La configuración de permisos y usuarios autorizados se gestiona mediante el archivo sudoers y el directorio /etc/sudoers.d/.
  • Opciones como -u, -s o -i permiten ejecutar comandos o abrir shells como otros usuarios, manteniendo trazabilidad.
  • Usar sudo con cuidado y limitar el acceso directo a root es clave para mantener la estabilidad y seguridad del sistema Linux.

Uso del comando sudo en Linux

Si usas Linux a diario tarde o temprano vas a toparte con el comando sudo, ese pequeño comando que aparece en casi todos los tutoriales cuando hay que tocar algo delicado del sistema. Añadir un usuario, instalar un paquete, editar un archivo de configuración o reiniciar un servicio… en cuanto la cosa tiene pinta de “administración”, sudo entra en juego para darte permisos especiales sin que tengas que entrar como root permanentemente.

Entender bien cómo usar sudo en Linux es clave para trabajar con el sistema de forma segura. No se trata solo de escribir sudo delante de un comando y meter una contraseña: hay toda una mecánica de permisos, grupos, tiempos de expiración y un archivo de configuración (sudoers) que dicta quién puede hacer qué. Vamos a verlo con calma, en castellano de la calle, pero sin dejarnos ningún detalle importante.

Qué es exactamente sudo en Linux y para qué sirve

El comando sudo en Linux permite ejecutar programas con los privilegios de otro usuario, normalmente el superusuario root. Su nombre suele explicarse como “superuser do” o “substitute user and do”, y su misión es sencilla: que puedas realizar tareas de administración sin iniciar sesión completa como root.

En la mayoría de distribuciones modernas (Ubuntu, Debian, openSUSE, etc.) sudo viene ya instalado y configurado para que un grupo de usuarios pueda usarlo. Gracias a esto, un usuario normal mantiene permisos limitados para el día a día, pero puede “pedir prestados” permisos de root puntualmente cuando hace falta.

Este enfoque es mucho más seguro que trabajar siempre como root. Si navegas por Internet, ejecutas aplicaciones gráficas o abres archivos adjuntos con una cuenta normal, cualquier posible ataque se queda bastante más limitado. Solo cuando realmente necesitas toquetear el sistema añades sudo al comando y te autenticas.

Importante: sudo no te convierte en root absoluto para siempre. Dependiendo de la configuración, te concede privilegios elevados solo para el comando que ejecutas o durante un intervalo de tiempo concreto en esa sesión de terminal. Pasado ese tiempo, te volverá a pedir la contraseña.

En resumen, sudo es el puente controlado entre un usuario corriente y las tareas de administración: te permite instalar software, cambiar permisos críticos o gestionar servicios, pero siempre bajo la supervisión de una política definida en el sistema.

Cómo funciona sudo internamente y cuál es su sintaxis básica

Comando sudo ejecutado en una terminal Linux

El uso básico de sudo es muy directo: se coloca delante del comando que quieras ejecutar con privilegios. La forma general es:

sudo comando argumentos

Cuando pulsas Enter, el sistema comprueba primero si tu usuario está autorizado para usar sudo. Esa autorización se define en el archivo /etc/sudoers y en los ficheros del directorio /etc/sudoers.d. Si tienes permiso, el sistema te pide una contraseña.

La contraseña que se introduce con sudo suele ser la de tu usuario normal, no la de root, salvo en configuraciones concretas o en ciertas distribuciones enterprise. Al escribirla en la terminal, no verás ni asteriscos ni caracteres; se introduce “a ciegas”, aunque se puede cambiar este comportamiento como veremos luego.

Una vez te autenticas correctamente, sudo ejecuta el comando como si fueras el usuario de destino (habitualmente root). Además, suele quedar un registro en los logs del sistema para que el administrador pueda auditar qué se ha hecho con sudo.

Por defecto, la autenticación de sudo tiene una validez temporal (normalmente unos 15 minutos). Mientras no cierres la terminal y no haya pasado ese tiempo, los siguientes comandos con sudo no volverán a pedirte la contraseña. Puedes forzar el refresco o el olvido de ese tiempo usando determinadas opciones.

Opciones y parámetros más habituales del comando sudo

Además de servir como simple prefijo, sudo tiene una serie de opciones muy útiles que te permiten ver información, renovar credenciales o ejecutar como otros usuarios. Algunas de las más importantes son:

  • -h: muestra un breve mensaje de ayuda con la sintaxis y todas las opciones disponibles de sudo.
  • -V: enseña la versión instalada del programa sudo y detalles de compilación.
  • -v: renueva el “tiempo de gracia” de autenticación sin ejecutar ningún comando. Sirve para refrescar el periodo de validez de la contraseña y evitar que caduque mientras sigues trabajando.
  • -k: invalida inmediatamente las credenciales en caché. Después de usar -k, el siguiente sudo te pedirá de nuevo la contraseña, aunque no hayan pasado los 15 minutos.
  • -l: muestra la lista de privilegios que tiene tu usuario con sudo. Es muy útil para saber qué comandos tienes permitido ejecutar según la configuración de sudoers.
  • -s: abre una shell usando sudo, heredando el entorno de tu usuario actual.
  • -i: abre una shell de login “limpia” del usuario de destino, similar a iniciar sesión directamente como ese usuario.
  • -u USUARIO: indica que quieres ejecutar el comando como otro usuario distinto de root, por ejemplo sudo -u pedro whoami.

Combinando estas opciones puedes adaptar el comportamiento de sudo a lo que necesites en cada momento, desde ver tu lista de permisos hasta conseguir una shell con el entorno de otro usuario.

  Cómo administrar tus contraseñas con Bitwarden de forma segura

Diferencias entre sudo y su: dos maneras de conseguir permisos

En Linux existen dos caminos clásicos para obtener privilegios de administración: sudo y su. A menudo se confunden, pero en realidad cubren necesidades distintas y conviene tener clara la diferencia.

El comando su (substitute user) permite cambiar de usuario en la misma terminal. Si no le indicas a quién cambiar, asume que quieres entrar como root. Te pedirá la contraseña del usuario al que vas a cambiar:

su pedro
Contraseña: **

Cuando usas su, no se cierra la sesión del usuario original; simplemente empiezas una nueva sesión “anidada” dentro de la anterior. Si encadenas varios su, puedes acabar con una pila curiosa de sesiones una dentro de otra. Para volver atrás, escribes exit tantas veces como haga falta.

El problema práctico de usar su para todo es que la gente acaba trabajando como root durante largos periodos, con todos los riesgos que eso implica: cualquier comando mal escrito puede destrozar medio sistema.

Sudo aparece precisamente para solucionar esto. En lugar de cambiar completamente de usuario, mantienes tu sesión normal y solo elevas privilegios para los comandos concretos que lo necesitan. En muchas distribuciones ni siquiera está recomendando iniciar sesión gráfica como root.

Resumiendo la idea clave: su cambia de usuario (normalmente a root) manteniendo esa identidad hasta que sales, mientras que sudo ejecuta un comando puntual (o una serie limitada) con permisos elevados y luego vuelves automáticamente a ser un usuario normal.

Ejemplos prácticos: usar sudo con comandos de administración comunes

La mejor forma de ver el poder de sudo es con ejemplos cotidianos de administración del sistema, donde un usuario normal chocaría con el clásico “Permiso denegado”.

Instalar o actualizar paquetes: si intentas usar el gestor de paquetes sin privilegios, lo normal es que falle al escribir en directorios del sistema. Por ejemplo, en Debian o Ubuntu:

apt-get update

Sin sudo, el sistema no podrá abrir los ficheros de bloqueo en /var/lib/apt/ y verás errores de permisos. Si repites el comando con sudo, se te pedirá la contraseña de tu usuario (si estás autorizado) y el proceso funcionará:

sudo apt-get update

Gestionar usuarios: crear un usuario nuevo, cambiarle la contraseña o modificar sus grupos requiere privilegios. Un ejemplo típico sería:

sudo useradd edward

Sin el prefijo sudo, un usuario normal no puede tocar el sistema de cuentas y el comando fallaría. Lo mismo aplica a utilidades como usermod o deluser.

Editar archivos de configuración del sistema: muchos ajustes se almacenan en ficheros de texto en /etc. Para abrir uno de estos archivos con un editor necesitas sudo. Por ejemplo, para editar /etc/hosts:

sudo nano /etc/hosts

En sistemas que usan systemd, también necesitarás sudo para gestionar servicios. Por ejemplo, reiniciar Apache:

sudo systemctl restart apache2

Fíjate en que para acciones que solo leen información y no modifican el sistema (como consultar el estado de un servicio), en muchas ocasiones no es necesario sudo, por ejemplo:

systemctl status NetworkManager

Ejecutar comandos como otro usuario con sudo (-u, -s, -i)

Además de ejecutar como root, sudo también te permite actuar como otros usuarios del sistema, algo muy útil cuando quieres probar permisos, revisar archivos propios de otra cuenta o lanzar procesos con otra identidad.

La forma más directa es usar -u seguido del nombre del usuario y a continuación el comando que quieras ejecutar:

whoami
sudo -u pedro whoami

En la primera línea whoami devuelve tu usuario real; en la segunda, gracias a sudo -u pedro, el comando se ejecuta con la identidad de “pedro”. Por supuesto, para esto también debes tener permiso en la configuración de sudoers.

Si lo que quieres es una shell completa como otro usuario tienes dos variantes muy importantes:

  • sudo -s: abre una shell con privilegios, heredando tu entorno actual. El usuario de destino (por defecto root) empieza en el mismo directorio y con tus variables de entorno.
  • sudo -i: abre una shell de inicio de sesión del usuario de destino. En este caso se carga su entorno “limpio”, se ejecutan sus scripts de inicio (como .profile o .bash_profile) y se arranca en su $HOME.

Ambas formas dejan rastro en el historial de comandos, lo cual es interesante a nivel de auditoría y para recordar qué se hizo en sesiones anteriores.

  Bill Gates y Linus Torvalds: Un histórico encuentro entre dos gigantes del software

El archivo sudoers: corazón de la configuración de sudo

Todo el comportamiento de sudo (quién puede usarlo, con qué comandos y en qué condiciones) se controla desde el archivo sudoers, ubicado en /etc/sudoers y complementado por los ficheros del directorio /etc/sudoers.d/.

Este archivo no se debe editar con un editor normal a pelo, porque un fallo de sintaxis puede dejar sudo inutilizable y complicarte la vida de mala manera. La forma correcta es usar el comando visudo, que abre el archivo con el editor configurado y valida su contenido antes de guardarlo.

Para editar el sudoers principal se suele usar:

sudo visudo -f /etc/sudoers

Dentro del fichero verás varias líneas clave, por ejemplo:

  • root ALL=(ALL:ALL) ALL: indica que el usuario root puede ejecutar cualquier comando en cualquier host, como cualquier usuario y grupo.
  • %admin ALL=(ALL) ALL: el símbolo % delante de un nombre se refiere a un grupo. Los usuarios del grupo admin tienen privilegios equivalentes a root.
  • %sudo ALL=(ALL:ALL) ALL: lo mismo, pero para el grupo sudo, muy usado en Debian y Ubuntu.
  • #includedir /etc/sudoers.d: esta directiva hace que se incluyan de forma automática todos los archivos de configuración que haya en ese directorio.

La práctica recomendada es no tocar demasiado la línea principal de root y, en su lugar, crear archivos específicos en /etc/sudoers.d/ para grupos o usuarios concretos. Esto facilita mantener la configuración ordenada y reduce riesgos.

Dar permisos sudo a un usuario: grupos y entradas personalizadas

En muchas distribuciones el primer usuario creado durante la instalación ya pertenece al grupo sudo (o admin), y por eso puede usar sudo desde el minuto uno. Si quieres otorgar permisos a más usuarios, lo más sencillo suele ser añadirlos a ese grupo.

Para ver qué usuarios pertenecen al grupo sudo puedes usar:

grep 'sudo' /etc/group

Si quieres que un usuario llamado “bill” tenga privilegios de sudo completos, basta con añadirlo al grupo correspondiente:

sudo adduser bill sudo

Después de esto, bill podrá ejecutar cualquier comando con sudo (salvo restricciones específicas que se añadan en sudoers). Si más adelante quieres quitarle esos privilegios, lo eliminas del grupo:

sudo deluser bill sudo

Cuando necesitas un control más fino, sudoers permite definir reglas muy detalladas. Por ejemplo, puedes crear un grupo especial (netadmin) y limitarlo a comandos de red concretos usando alias de comandos:

Cmnd_Alias CAPTURE = /usr/sbin/tcpdump
Cmnd_Alias SERVERS = /usr/sbin/apache2ctl, /usr/bin/htpasswd
Cmnd_Alias NETALL = CAPTURE, SERVERS
%netadmin ALL=NETALL

Con esta configuración, cualquiera que pertenezca al grupo netadmin podrá usar tcpdump y algunos comandos de Apache con sudo, pero no tendrá carta blanca sobre todo el sistema. Para completar la jugada, añadirías a bill al grupo netadmin:

sudo adduser bill netadmin

Configurar sudo “seguro” y sudo “cómodo” (con o sin contraseña)

Una de las decisiones prácticas más frecuentes es si sudo debe pedir siempre contraseña o no. Ambas formas son posibles y se configuran en sudoers o en ficheros de /etc/sudoers.d/.

Modo “seguro”: siempre pide contraseña. Es la opción más prudente: el usuario puede ejecutar cualquier comando como root con sudo, pero cada vez que lo hace debe introducir su clave. Una entrada típica para esto sería:

usuario ALL=(ALL:ALL) ALL

Modo “cómodo”: sin contraseña (NOPASSWD). En entornos de escritorio o máquinas de prueba algunos usuarios prefieren que sudo no les pida la clave cada vez. Para ello se puede usar algo como:

usuario ALL=(ALL) NOPASSWD: ALL

En ambos casos la idea es la misma: se crea un archivo de autorización en /etc/sudoers.d para el usuario en cuestión, bien a mano con visudo o mediante un script. Hay quien automatiza esto con pequeños bash scripts que copian la línea apropiada a ese directorio usando su -c para escribir como root.

Ten en cuenta que desactivar la petición de contraseña reduce la seguridad. Un comando que lances sin darte cuenta (o un script malicioso) podrá usar sudo sin ninguna barrera adicional.

Personalizar la introducción de contraseñas: mostrar asteriscos con pwfeedback

Por diseño, la contraseña introducida con sudo no muestra nada en pantalla, ni letras ni asteriscos. Esto se pensó como una medida de seguridad para no revelar la longitud de la clave, pero a muchos usuarios les resulta poco amigable.

  Hardening para portátiles que viajan mucho: guía completa de seguridad

Desde hace años sudo permite cambiar este comportamiento con la opción pwfeedback. Si la activas, verás un asterisco por cada carácter que introduces al escribir la contraseña.

Para habilitarlo, edita la configuración con visudo:

sudo visudo

Dentro del archivo, añade una línea como esta:

Defaults pwfeedback

Guarda los cambios y cierra. A partir de ese momento, cuando ejecutes un comando con sudo y te pida la contraseña, verás los asteriscos ir apareciendo. Si algún día prefieres volver al comportamiento silencioso, solo tienes que eliminar esa línea de sudoers.

Riesgos de usar sudo y root sin cuidado

Trabajar con sudo o como root es tremendamente potente, pero también puede ser desastroso si no se tiene cuidado. Linux está pensado para ser seguro por defecto, pero cuando elevas privilegios se levantan muchos de esos frenos.

Uno de los riesgos más evidentes es borrar archivos críticos del sistema. Comandos como rm -rf / o variaciones con rutas mal escritas pueden dejar el sistema totalmente inutilizable. Incluso algo aparentemente inocente como rm -rf "$directorio"/* puede ser letal si la variable está vacía.

Otro peligro serio es ejecutar con sudo scripts o binarios descargados de Internet sin revisarlos. Con permisos de superusuario pueden instalar rootkits, backdoors y todo tipo de malware muy difícil de detectar después.

También puedes romper el sistema modificando permisos de archivos esenciales. Tocar a lo loco cosas como /etc/passwd, /boot o el propio GRUB con chmod o chown puede impedir incluso que la máquina arranque, obligándote a reinstalar o a usar herramientas avanzadas de recuperación.

La regla de oro es clara: cuando uses sudo o estés como root, piénsatelo dos veces antes de pulsar Enter. Y, siempre que puedas, copia comandos de fuentes fiables, léelos y entiende qué hacen.

Desactivar o limitar la cuenta root manteniendo sudo

En muchos entornos compartidos interesa limitar el uso directo de la cuenta root. Si la contraseña de root circula por demasiadas manos, cualquiera puede hacer cambios profundos en el sistema sin trazabilidad.

Una estrategia habitual es bloquear la cuenta root para que no se pueda iniciar sesión directamente ni usar su con ella, pero seguir permitiendo que determinados usuarios usen sudo. Por ejemplo:

sudo passwd -l root

Con este comando se bloquea la contraseña de root. No se podrá entrar como root desde login ni usar su para cambiar a él si no hay una contraseña válida, pero los usuarios autorizados en el grupo sudo (o con reglas en sudoers) seguirán pudiendo ejecutar comandos administrativos.

Si más adelante quieres volver a habilitar root, bastará con asignarle una nueva contraseña usando passwd root desde un entorno con privilegios adecuados (por ejemplo, un modo de recuperación).

Comandos alternativos y herramientas relacionadas: su y doas

Además de sudo y su, en algunos sistemas se está popularizando un comando alternativo llamado doas (y run0, sustituto de sudo), inspirado en OpenBSD y con una filosofía más simple y minimalista.

Doas no suele venir instalado por defecto, así que lo normal es incorporarlo desde los repositorios y luego crear su archivo de configuración /etc/doas.conf. Un ejemplo básico sería:

sudo apt-get install doas
sudo nano /etc/doas.conf

Dentro de ese archivo puedes definir reglas muy sencillas, por ejemplo:

permit nopass manz

Esta línea indica que el usuario “manz” puede usar doas sin necesidad de contraseña. También puedes usar deny para bloquear, o configurar permisos más finos, pero la filosofía es que la sintaxis sea más directa que la de sudoers.

Aun así, en la mayoría de distribuciones Linux el estándar de facto sigue siendo sudo, por su flexibilidad, la gran cantidad de documentación disponible y su integración con herramientas de auditoría.

Dominar el uso de sudo en Linux te permite moverte con soltura entre tareas de usuario normal y labores de administración, mantener el sistema más seguro evitando sesiones permanentes como root y adaptar los permisos de cada cuenta según lo que realmente necesita hacer; entender la diferencia con su, saber tocar sudoers con visudo, controlar opciones como pwfeedback o NOPASSWD y ser consciente de los riesgos de un comando mal lanzado es lo que marca la frontera entre “ir probando comandos” y administrar un sistema Linux con cabeza.

Crear un entorno WSL seguro
Artículo relacionado:
Cómo crear un entorno WSL 2 seguro y bien configurado