Otorgando al usuario derechos administrativos completos sobre el sistema operativo, sudo es uno de los comandos más importantes — y peligrosos — en Linux. Aquí se explica cómo usarlo sabiamente.
Introducción a sudo
Probablemente has visto la caricatura de XKCD donde una persona le pide a otra que le haga un sándwich. Cuando la segunda persona se niega, la primera responde con: "sudo hazme un sándwich."
Sudo significa super user do y es el equivalente del comando run as en Windows.
Para instalar software, compilar un kernel o hacer cualquier cosa que requiriera derechos administrativos, primero tenía que cambiar al usuario root (o super usuario) con el comando su (o su -, si necesitabas incluir el entorno de root). En ese entonces, no pensábamos en los riesgos. De hecho, uno podía iniciar sesión en el computador Linux como usuario root o incluso conectarse por SSH como usuario root.
Puede leer también | Systemd introduce run0, una alternativa similar a sudo diseñada para sustituir a sudo
Con el usuario root disponible, cualquiera podía acceder a esos poderes (si conocían — o podían descifrar — la contraseña del usuario root). Y permitir el acceso root por SSH era un desastre esperando a suceder.
Escenario de Riesgo
Imagina este escenario: Inicias sesión en tu máquina Linux como usuario root y realizas alguna tarea. Luego te alejas de la computadora y olvidas bloquear el escritorio. Cualquiera podría acercarse a la máquina y hacer lo que quiera... con poderes administrativos completos.
No quieres encontrarte en tal situación. De hecho, como regla general, nunca debes iniciar sesión como usuario root y evitar cambiar a root a toda costa. Es por eso que necesitas la ayuda de sudo.
Historia de sudo
Afortunadamente, mucho antes de que empezara a usar Linux, Robert Coggeshall y Cliff Spenser escribieron el subsistema original para sudo. El lanzamiento inicial fue alrededor de 1980. Entre 1986 y 1993, sudo fue modificado sustancialmente por el personal de TI de la Universidad de Colorado Boulder. Alrededor de 1994, sudo quedó bajo la supervisión de Todd C. Miller (un desarrollador de OpenBSD) quien ha sido el cuidador desde entonces.
¿Qué Hace sudo?
Esencialmente, sudo da a los usuarios (que pertenecen al grupo necesario) permisos temporalmente elevados, para que puedan realizar tareas administrativas (como instalar software o modificar archivos de configuración como /etc).
Para usar esta herramienta, los usuarios escriben sudo seguido del comando que quieren ejecutar. Luego se les solicita su contraseña de usuario y, tras una autenticación exitosa, el comando se ejecutará.
Puede leer también | Microsoft lleva el comando sudo de Linux a Windows 11
Al usar sudo, el usuario root no es utilizado, tocado o afectado. Una vez que un usuario ejecuta un comando con sudo con éxito, tienen un período de gracia de 5 minutos hasta que se les solicite nuevamente que escriban su contraseña de usuario para otro comando sudo.
En otras palabras, podrías ejecutar un comando como:
sudo apt-get upgrade -y
y, una vez completado, ejecutar un comando como:
sudo systemctl restart sshd
sin tener que volver a escribir tu contraseña de usuario. Si el siguiente comando se ejecuta fuera de esa ventana de cinco minutos, tendrás que volver a escribir tu contraseña de usuario.
Añadiendo Usuarios al Grupo Requerido
Cuando añades un usuario a Linux, algunas distribuciones lo añaden automáticamente a sudo. La mayoría, sin embargo, no lo hace. Cómo añades un usuario al grupo necesario depende de la distribución que uses. Por ejemplo, las distribuciones basadas en Ubuntu usan el grupo sudo, mientras que las distribuciones basadas en Fedora usan el grupo wheel.
Puede leer también | El uso, dominio y Poder del comando 'sudo' en Linux
Para añadir un usuario al grupo sudo, el comando sería algo como esto:
sudo usermod -aG sudo USUARIO
Donde USUARIO es el nombre del usuario a añadir.
Para añadir un usuario al grupo wheel, el comando sería algo como esto:
sudo usermod -aG wheel USUARIO
Donde USUARIO es el nombre del usuario.
El usuario debe cerrar sesión y volver a iniciar sesión para que los cambios surtan efecto. Una vez que hayan iniciado sesión nuevamente, tendrán todo el poder de sudo a su disposición.
El Archivo sudoers
Aquí es donde sudo se pone un poco complicado. El archivo sudoers es donde se configura sudo. Este archivo es tan importante que tiene su propio editor incorporado (en otras palabras, nunca edites /etc/sudoers con un editor de texto normal), llamado visudo. El editor visudo valida la sintaxis del archivo sudoers cuando vas a guardar. De esta manera, es menos probable que introduzcas errores en la configuración, lo que podría ser desastroso.
Puede leer también | Microsoft patenta el comando sudo
Para abrir el archivo sudoers, emite el comando:
sudo visudo
Se te pedirá tu contraseña de usuario y, tras una autenticación exitosa, se te presentará el archivo sudoers en tu editor de texto predeterminado (como nano). La disposición de una línea del archivo sudoers se ve así:
root ALL=(ALL:ALL) ALL
Cada ALL tiene un significado específico:
- El primer ALL indica que la regla se aplica a todos los hosts.
- El segundo ALL indica que los usuarios root pueden ejecutar comandos como todos los usuarios.
- El tercer ALL indica que los usuarios root pueden ejecutar comandos como todos los grupos.
- El cuarto ALL indica que las reglas se aplican a todos los comandos.
Te dije que era complicado.
Puedes crear alias en el archivo sudoers, para facilitar la creación de reglas personalizadas. Digamos que quieres crear una regla que se aplique a los usuarios olivia, camille, anton y clara. Digamos que quieres dar a esos usuarios acceso a los comandos apt-get update y apt-get upgrade y solo a esos comandos. Para eso, podrías crear un alias dentro del archivo sudoers así:
User_Alias GROUPONE = olivia, camille, anton, clara
Luego darías acceso al nuevo grupo a los comandos así:
GROUPONE ALL = /usr/bin/apt-get update
GROUPONE ALL = /usr/bin/apt-get upgrade
Después de guardar y cerrar el archivo, los usuarios en GROUPONE podrán ejecutar los dos comandos.
La mejor opción, sin embargo, es usar los grupos sudo y wheel, para no arriesgarte a causar estragos en tu máquina a través del archivo sudoers. Sin embargo, si necesitas ser granular con los permisos de administrador, sudoers es el camino a seguir.
El comando sudo es imprescindible para una administración y uso adecuados de Linux. Para aprender más sobre sudo, lee la página del manual con el comando:
man sudo