sudo

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.

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á.

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.

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.

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

 

Fuente: somoslibres

 

¿Quién está en línea?

Hay 36864 invitados y ningún miembro en línea