Instalar y configurar sudo

En cualquier sistema operativo moderno, pueden existir múltiples usuarios, ya que el sistema puede ser utilizado por diferentes personas. Y como puede parecer obvio, no todos los usuarios tienen el mismo rol o los mismos privilegios. Hay varios comandos relacionados con estas tareas, que trataremos en este artículo:

Comando Descripción
su [user] Cambia a otro usuario en la misma terminal, manteniendo el anterior activo.
sudo [command] Eleva temporalmente los privilegios del usuario (si los tiene) y ejecuta el comando.
visudo Accede a la configuración de sudo. Equivalente a editar /etc/sudoers.

Veamos detalladamente cada uno de ellos, pero antes hablemos del usuario root.

El usuario root

A parte de los usuarios creados en el sistema, GNU/Linux tiene un usuario especial llamado root. Se trata del usuario administrador, el cuál tiene permisos para hacer cualquier cosa en el sistema (borrar archivos, cambiar configuraciones, instalar programas, etc...).

Se suele decir que algunos usuarios del sistema «tienen privilegios de root», porque se han configurado previamente para que tengan capacidades de administrador. Veremos más adelante como configurarlos para ello.

El comando su

El comando su (substitute user) permite cambiar a otro usuario en la misma terminal. La sesión del usuario anterior no se cierra, sino que permanece abierta, albergando al nuevo usuario al que hemos cambiado. De esta forma, si escribimos exit, volvemos a la sesión del usuario anterior:

[email protected] $ su pedro
Contraseña: *******

[email protected] $ exit

[email protected] $

Obviamente, el usuario debe existir y debemos conocer la contraseña, la cuál se nos preguntará inmediatamente después de escribir el comando.

Ten en cuenta que si al escribir su pedro y cambiar al usuario pedro, volvemos a escribir su manz, lo que obtendríamos es una sesión del usuario manz, que contiene una sesión del usuario pedro, que a su vez contiene otra sesión del usuario manz.

Si al comando su no se le indica un usuario, tomará por defecto cambiar al usuario root.

El comando sudo

El comando su es una buena herramienta para cambiar de usuario, pero suele ser una molestia tener que estar cambiando frecuentemente de usuario cada vez que necesitemos privilegios, por lo que si tenemos esta necesidad, el usuario acaba trabajando con root, lo que suele ser una muy mala práctica (y mala idea en general, ya que es más probable que estropeemos algo).

Es por eso que surge el comando sudo, el cuál nos permite elevar los privilegios del usuario temporalmente para poder realizar tareas de root. La idea es muy sencilla, se trata de escribir sudo seguido del comando que queremos ejecutar. Si el usuario tiene los permisos adecuados para elevar sus privilegios al nivel de root, entonces podrá realizar las tareas.

Sandwich (Sudo XKCD) Una tira de XKCD muy conocida, representando el uso de sudo.

Si al escribir sudo nos aparece el mensaje command not found es que no tenemos el comando instalado. Aunque las últimas distribuciones de Debian ya lo traen incorporado, si tienes alguna versión antigua es posible que no venga de serie. Es muy sencillo instalarlo:

[email protected] $ sudo
bash: sudo: command not found

[email protected] $ su root
Contraseña: *******

[email protected] # apt-get update && apt-get install sudo

[email protected] # exit

[email protected] $

Una tarea común, por ejemplo, donde necesitas privilegios de administrador, podría ser la de actualizar los paquetes disponibles en los repositorios de apt-get. Así se haría sin utilizar sudo y utilizando sudo:

[email protected] $ apt-get update
Leyendo lista de paquetes... Hecho
E: No se pudo abrir el fichero de bloqueo «/var/lib/apt/lists/lock» - open (13: Permiso denegado)
E: No se pudo bloquear el directorio /var/lib/apt/lists/

[email protected] $ sudo apt-get update
[sudo] password for manz: *********
Obj:1 http://deb.debian.org/debian buster InRelease
Des:2 http://security.debian.org/debian-security buster/updates InRelease [65,4 kB]
Des:3 http://deb.debian.org/debian buster-updates InRelease [51,9 kB]
Des:4 http://deb.debian.org/debian buster-backports InRelease [46,7 kB]
Des:5 http://ftp.debian.org/debian buster-backports InRelease [46,7 kB]
[...]

Además, el comando sudo tiene un parámetro -u que puedes utilizar para ejecutar un comando como un usuario diferente de forma temporal. Observa el siguiente ejemplo donde utilizamos whoami, un comando que te dice cual es el usuario actual:

[email protected] $ whoami
manz

[email protected] $ sudo -u pedro whoami
pedro

Recuerda siempre, que sólo podrás elevar los privilegios con sudo si el usuario ha sido previamente permitido para poder realizar esta elevación de privilegios. Dicho permiso debe darse por root o por un usuarios que tenga privilegios.

Cómo dar permisos de root

Hemos mencionado varias veces que un usuario sólo podrá utilizar el comando sudo si previamente se le han concedido «privilegios de root». Existe un comando llamado visudo (vi + sudo) que no es más que un atajo para editar el fichero /etc/sudoers, donde se guarda la información de los usuarios que tienen privilegios de root.

En dicho fichero, normalmente encontraremos algo parecido a lo siguiente:

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

Lo que nos interesa son las 2 lineas de la parte inferior. La primera de ellas, la que comienza por root, indica los usuarios que tendrán privilegios (en este caso, sólo root), la siguiente linea, que comienza por %sudo, indica que todos los usuarios de dicho grupo podrán elevar privilegios.

Podríamos añadir una linea, justo debajo de la de root, tal que:

manz    ALL=(ALL:ALL) ALL

Sin embargo, personalmente me gusta más la opción de añadir o eliminar usuarios al grupo sudo para darles permiso de sudo, que lo hace bastante más limpio, rápido y práctico. Podemos hacerlo con el siguiente comando (recuerda que debes hacerlo con el usuario root o algún usuario con privilegios):

[email protected] # usermod -G sudo manz

Una vez hecho esto, ya tendremos al usuario (manz en este caso), añadido al grupo sudo y con la posibilidad de usar este comando para elevar los privilegios de root.

Manz
Publicado por Manz

Docente, divulgador informático y freelance. Autor de Emezeta.com, es profesor en la Universidad de La Laguna y dirige el curso de Programación web FullStack y Diseño web FrontEnd de EOI en Tenerife (Canarias). En sus ratos libres, busca GIF de gatos en Internet.