¿Cómo utilizo sudo en Linux? Nuestra guía completa con ejemplos
Table of Contents
I. Introducción
Para administrar una máquina Linux, es necesario utilizar la cuenta root, que se refiere al superusuario, o el comando sudo
. ¿Cuál es la función de este comando en Linux? ¿Cuáles son sus ventajas, sobre todo en términos de seguridad? ¿Cómo se configura el archivo /etc/sudoers
?
El objetivo de este artículo es responder a una serie de preguntas que pueden surgir desde el momento en que te interesas por el comando sudo. Para que esta documentación sea lo más completa posible, he incluido una serie de ejemplos que puedes aplicar a tu propio contexto y necesidades.
II. ¿Qué es el comando sudo?
En Linux, ciertas acciones de configuración, administración y seguridad se basan en el uso de la extensión root
para beneficiarse de un nivel suficiente de privilegios. De hecho, estas acciones potencialmente sensibles no son accesibles a todos los usuarios, lo cual es una buena noticia.
Sin embargo, no se recomienda conectarse a una máquina como root
al administrarla. Entonces, ¿cómo hacerlo? Aquí es donde el sudo
¡! Permite ejecutar comandos con privilegios elevados desde una cuenta de usuario estándar y, por tanto, sin utilizar directamente el comando root
.
El programa sudo
, que significa"SubstituteUser DO", permite a un usuario ejecutar un comando con los privilegios de otro usuario, normalmente root
.
Cuando un usuario ejecuta un comando con sudo
, debe introducir su propia contraseña. Además, todas las acciones realizadas a través de sudo
se registran, lo que permite la supervisión y mejora la seguridad. Como veremos más adelante, un usuario debe estar autorizado para utilizar el comando sudo y realizar este cambio temporal de privilegios.
Nota : en Linux, no se pueden crear varias cuentas de root, mientras que en Windows, se pueden crear varias cuentas de administrador. Sudo responde a esta necesidad de administración segura de una máquina Linux por varias personas.
III. ¿Cuáles son las ventajas de sudo?
El uso de sudo
presenta varias ventajas, sobre todo en términos de seguridad y gestión de derechos. En lugar de compartir la contraseña de root entre varios usuarios, cada usuario tiene su propia contraseña y puede ser autorizado a ejecutar comandos específicos. En otras palabras, esto evitará el uso indebido de la cuenta raíz, al tiempo que se mantiene un registro de quién ha hecho qué.
Además, sudo
permite restringir el acceso a determinados comandos y desactiva el uso prolongado de privilegios elevados estableciendo un tiempo de caducidad (el usuario tendrá que volver a introducir su contraseña).
En resumen, sudo juega un papel clave en la seguridad de las máquinas Linux. Es esencial utilizarlo para delegar permisos. En comparación con Windows, esto equivale a elevar los privilegios a través de UAC, cuando se necesita realizar una acción que requiere derechos de administrador.
IV. Cómo instalar sudo en Linux
El programa sudo puede o no estar ya instalado en la máquina Linux. Esto depende no sólo de la distribución que esté utilizando, sino también del modo de instalación. He aquí algunos ejemplos:
- Si instala Ubuntu con un entorno de escritorio, el usuario creado durante la instalación estará autorizado a utilizar sudo, y se instalará sudo.
- Si instala Debian sin una GUI, habrá una cuenta de usuario estándar y no se instalará sudo.
- Si instala Debian sin asignar una contraseña a la cuenta root, entonces el primer usuario estará autorizado a usar sudo, y se instalará sudo.
Esto demuestra que es muy posible encontrar una máquina donde sudo no esté instalado... Como resultado, puede que necesites instalarlo. He aquí cómo instalar sudo en Linux:
# Debian / Ubuntu
apt-get install sudo
# Fedora
dnf install sudo
Veamos ahora algunos ejemplos de cómose utilizasudo.
V. ¿Cómo se utiliza sudo?
Una vez que sudo ha sido instalado en tu máquina, estás listo para usarlo. Aunque tendrás que conceder permiso al usuario que desees que administre tu máquina.
A. Ejecutar un comando con sudo
Empecemos con un ejemplo muy sencillo. Si el usuario flo
desea actualizar los paquetes de su sistema, puede utilizar el siguiente comando:
apt update && apt upgrade -y
El problema es que no tendrá los privilegios necesarios para realizar estas acciones... Aquí es donde entra en juego el comando sudo
. Lo que da:
sudo apt update && sudo apt upgrade -y
Se le pedirá que introduzca su contraseña antes de ejecutar el comando. Las acciones solicitadas se llevarán a cabo sin utilizar directamente la cuenta root.
B. Ejecutar un comando como otro usuario
Por defecto, sudo
ejecuta los comandos como root. Sin embargo, puedes utilizar la opción -u
para ejecutar un comando como otro usuario. Si no lo sabías, ahora ya lo sabes: sudo no se limita a ejecutar comandos como root.
Por ejemplo, para ejecutar un comando como usuario it-connect
:
sudo -u it-connect whoami
Cómo hacer un pedido whoami
se utiliza para ver qué usuario está actualmente en uso en la Terminal. A continuación, podemos ver la diferencia entre ejecutar el comando solo o como otro usuario.

C. Inicie un intérprete de comandos raíz temporal
Si flo
desea cambiar temporalmente al modo root dentro de un Terminal, puede ejecutar este comando con la opción -i
:
sudo -i
Esto abrirá un intérprete de comandos root para él hasta que salga con exit
. Entonces cambiará a un intérprete de comandos cuyo prompt será root@NomMachine:~#
. Se trata de un uso menos frecuente, pero que conviene tener en cuenta.
VI. Configuración del archivo /etc/sudoers
Según los ejemplos anteriores, el usuario flo
tiene los permisos necesarios para utilizar sudo
. ¿Cómo se define esta autorización? ¿Cómo puedo autorizar a otro usuario a utilizar el comando sudo? ¿Es posible limitar los comandos autorizados? Eso es lo que veremos en esta parte del artículo.
La configuración de sudo
se basa en el archivo /etc/sudoers
, que define los derechos de los usuarios. Debe modificarse con el comando visudo
para evitar errores de sintaxis.
A. Añadir un usuario al grupo sudo
Como vimos en otro artículo sobre cómo añadirun usuario sudo en Linux, los usuarios que pertenecen al grupo sudo
puede ejecutar comandos con sudo
. Para añadir el usuario adm_flo
a este grupo:
usermod -aG sudo adm_flo
A continuación, puede listar sus permisos actuales:
sudo -l
Este es el resultado que obtenemos en el contexto del usuario flo
:

Devuelve los permisos de la cuenta después de analizar las directivas definidas en la directiva /etc/sudoers
. Aquí podemos ver que el usuario flo
puede ejecutar cualquier comando en la máquina Linux (como root).
También puede comprobar que el usuario pertenece al grupo sudo con este comando:
id flo
En la lista devuelta, hay una referencia para verificarlo. Esto también funcionaría con el groups
.
uid=1000(flo) gid=1000(flo) groupes=1000(flo),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),100(users),114(lpadmin),2000(administrateurs)
B. Editar la configuración de sudoers con visudo
Para modificar el fichero de configuración sudoers
, existe una herramienta específica: visudo
. Podríamos utilizar nano
u otro editor de texto, pero la mejor práctica es utilizar visudo
.
La ventaja de utilizar visudo
es que la herramienta bloqueará el archivo de configuración /etc/sudoers
para evitar que varias personas trabajen en él, pero también -y esto es importante- ¡comprobará la sintaxis de cualquier regla añadida o modificada!
Para modificar el archivo /etc/sudoers
, utilizaremos este comando:
sudo visudo
o, si ha iniciado sesión como root
:
visudo
El contenido del sudoers
aparece en la pantalla.

En este archivo, si te desplazas hasta el final, verás varias líneas interesantes. Aquí, en una máquina Ubuntu.
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
Estas tres directrices significan lo siguiente:
- La primera línea permite al usuario
root
ejecutar todos los comandos con todos los privilegios. - La segunda línea permite a todos los miembros del grupo
admin
ejecutar todos los comandos utilizandosudo
- La tercera línea es idéntica a la regla para el grupo
admin
, pero esta vez para los usuarios pertenecientes al gruposudo
.
Obsérvese que la línea correspondiente al admin
no está presente en todos los sistemas Linux. Es muy común tener sólo el sudo
.
C. Sintaxis de una regla sudo
Para crear reglas, hay que respetar una sintaxis precisa. Tomemos el ejemplo de la regla sudo
:
%sudo ALL=(ALL:ALL) ALL
He aquí cómo interpretarlo:

Esto también facilita la comprensión del comentario asociado a este comando en el archivo sudoers
. Cada uno de estos valores puede modificarse para afinar la regla.
He aquí algunos detalles más sobre la sintaxis:
- Usuario / grupo: para especificar un usuario, basta con indicar su identificador, mientras que para un grupo, añada el prefijo
%
. Sólo se especifica un usuario o grupo por línea. - Host: si se especifica
ALL
significa que esta regla se aplica a todas las máquinas - Todos los usuarios: le permite especificar el usuario cuyos derechos desea asumir.
ALL
tenemos en cuenta todos los usuarios, incluido el usuarioroot
(lo que nos interesa) - Todos los grupos: igual que para los usuarios
- Todos los comandos: se utiliza para especificar el comando o comandos que el usuario (o grupo) especificado al principio de la línea puede ejecutar en la máquina. Si hay varios comandos, utilice una coma como separador.
Nota: en términos de administración, puede dar derechos directamente a los grupos y luego añadir el usuario (s) a ese grupo.
D. Crear una nueva regla en sudoers
Tomemos ahora el ejemplo de un usuario estándar, no miembro del grupo sudo
y llamado itconnect
. Vamos a darle los derechos para editar el archivo /etc/hosts
vía nano
. Este archivo de sistema está protegido contra escritura y no puede ser modificado por ningún usuario.
Actualmente, el comando sudo no me permite abrir este archivo para escribir, ya que falta la directiva en el archivo sudoers
. El resultado es el siguiente error " itconnect no aparece en el archivo sudoers. Este evento será reportado ".

Con la ayuda del usuario root
(o flo
), vamos a modificar el sudoers
con visudo
y añadir la siguiente línea:
itconnect ALL=(ALL) /usr/bin/nano /etc/hosts
Es importante especificar que se debe dar la ruta completa al binario, en este caso nano
. Para encontrar fácilmente la ruta al binario, utilice el comando which
por ejemplo:
que nano
Con esta directiva, el usuario itconnect
puede modificar la directiva /etc/hosts
¡! Deberá ejecutar :
sudo nano /etc/hosts
A continuación, el usuario debe introducir su contraseña. Tenga en cuenta que sudoers
admite la opción NOPASSWD
: esto indica que el usuario puede ejecutar este comando sin tener que introducir su contraseña. Esto no es recomendable, pero es una posibilidad.
Si volvemos al ejemplo anterior, el resultado es esta modificación:
itconnect ALL=(ALL) NOPASSWD:/usr/bin/nano /etc/hosts
Ahora, para ir un paso más allá, veamos cómo utilizar la noción de alias con sudoers
.
Nota : el orden de las normas es importante y no debe pasarse por alto. Si se aplican varias reglas al mismo caso, se tendrá en cuenta la última en aplicarse. En otras palabras, se evalúan todas las reglas.
E. Sudoers y alias
Al principio del sudoers
podemos ver varias secciones declaradas en la primera parte :
# Especificación de alias de host # Especificación de alias de usuario # Especificación de Cmnd_alias
Estas tres secciones le permiten declarar alias para hosts, usuarios y comandos. Por ejemplo, podemos crear un alias de usuario ADMINS
y asociarle varios usuarios. Luego, en las reglas, podemos utilizar este alias en lugar de llamar a los usuarios uno por uno o crear un grupo específico si queremos crear una regla común a varios usuarios.
Pongamos un ejemplo... Vamos a crear un alias de usuario llamado ADMINS
y se referirá a dos cuentas: itconnect
y flo
. Separe cada nombre con una coma. Lo que da:
Usuario_Alias ADMINS = itconnect, flo
A continuación, declararemos un alias de comando llamado SYSTEM
. Se referirá al systemctl
pero puede contener varios comandos. Lo que da:
Cmnd_Alias SISTEMA = /usr/bin/systemctl
Por último, para crear una regla que permita a ADMINS
utilizar comandos SYSTEM
, se obtendrá la siguiente regla:
ADMINS ALL=(TODOS) SISTEMA
Usuarios y itconnect
y flo
ya pueden ejecutar todos los comandos asociados al alias SYSTEM
.
F. ¡Sudoers y el carácter de exclusión "!
Dentro de una regla, especificar el carácter !
delante del comando permitirá prohibirlo. Por ejemplo, podemos autorizar al usuario itconnect
cambiar las contraseñas de los usuarios, excepto las del usuario root
. Por lo tanto, debemos añadir la siguiente regla :
itconnect ALL=(ALL) /usr/bin/passwd, !/usr/bin/passwd root
Tras la aplicación de esta directiva, he aquí el resultado:

G. Modificar el tiempo de expiración del comando sudo
Cuando el sudo
debemos introducir la contraseña de la cuenta de usuario que inició la acción para validar la operación. Luego, si ejecutamos un nuevo comando sudo
, la contraseña no es necesaria, ya que el acceso permanece desbloqueado durante X minutos. Por defecto, este valor parece variar en función de la distribución utilizada, a veces 5 minutos, a veces 15 minutos.
Esta medida de seguridad es importante, pero puede ajustarse. De hecho, es posible modificar este valor para indicar el tiempo de caducidad ( timeout
) que desee para sudoers
.
Dentro del archivo sudoers
después de las otras líneas Defaults
declare la siguiente línea:
Por defecto timestamp_timeout=5
Las líneas Defaults
se utilizan para establecer los parámetros globales y por defecto de sudo.
He aquí algunos ejemplos más:
# Apply a Defaults rule to a specific user
Defaults:flo timestamp_timeout=10
# Ask for the password for every command
Defaults timestamp_timeout=0
# Always display the sudo warning on every use
Defaults lecture=always
# Show asterisks * when entering the password (hidden by default)
Defaults pwfeedback
VII. El archivo /etc/sudoers.d
A partir de ahora, dejaremos el sudoers
para hablar de /etc/sudoers.d
. Esta carpeta se utiliza para almacenar archivos declarativos para sudoers
que se leerá además del sudoers
en sí mismo. Tenga en cuenta que todos los archivos que contengan "~" o "." en el nombre no se leerán. Esto resulta especialmente útil para organizar las reglas por archivos, en lugar de centralizarlo todo en el mismo archivo: el archivo sudoers
siempre se leerá, pase lo que pase.
Para crear un nuevo archivo llamado ADMINS
utilizaremos siempre el comando visudo
de esta forma:
visudo /etc/sudoers.d/ADMINS
Podríamos entonces incluir nuestros alias y reglas creados previamente dentro de este archivo.

VIII. Trazabilidad de las acciones sudo
Una de las ventajas de sudo
es la capacidad de rastrear todas las acciones realizadas por los usuarios. Los comandos ejecutados a través de sudo
se guardan en el archivo de registro /var/log/auth.log
(en Debian/Ubuntu) o /var/log/secure
(en Red Hat/Fedora).
Imaginemos que, en una máquina Linux, un usuario intenta utilizar el comando sudo cuando no está autorizado a hacerlo. Esto generará inmediatamente una nueva línea de registro.
He aquí un ejemplo:
sudo: itconnect : user NOT in sudoers ; TTY=pts/0 ; PWD=/home/flo ; USER=root ; COMMAND=/usr/bin/apt-get update
Entendemos que el usuario itconnect
intentó ejecutar el comando apt-get update
. El intento fue rechazado.
Si la acción está autorizada, también se añade al archivo de registro. A continuación, podemos ver que el usuario flo
utilizó el sudo
para ejecutar el passwd it-connect
.
sudo: flo : TTY=pts/0 ; PWD=/home/flo ; USER=root ; COMMAND=/usr/bin/passwd it-connect
IX. Conclusión
Este tutorial sobre el usodel comando sudo
y la configuración de sudoers
en Linux está llegando a su fin. Gracias a esta guía de uso y configuración de sudo, dispondrás de toda la información necesaria para manejarlo y hacer un buen uso de él.
Comprendiendo cómo utilizarlo y cómo configurar /etc/sudoers
, con reglas a medida, es posible limitar los riesgos de comprometer una máquina Linux. Y todo ello mientras se permite a los usuarios realizar las tareas que necesitan.
Por último, si todavía no estás convencido del valor de sudo -lo que me sorprendería, de todos modos- deberías saber que ANSSI recomienda su uso. Esta recomendación se considera una buena práctica y se describe en la guía"Recommandations de sécurité relatives à un système GNU/Linux" (Recomendaciones de seguridad para un sistema GNU/Linux).