El comando sudo (Parte I)

¿Que es sudo?

El programa sudo (del inglés super user do) es una utilidad de los sistemas operativos tipo Unix, como Linux, BSD, o Mac OS X y permite a los usuarios ejecutar programas con los privilegios de seguridad de otro usuario (normalmente el usuario root) de manera segura. El usuario de este modo se convierte así temporalmente en superusuario. En este articulo se indica la instalación y configuración y cambio de comportamiento de la configuración inicial del programa, en mi servidor Debian 10.

Instalar sudo

Recordando que realice la instalación recomendada aquí (instalación mínima y básica) el paquete sudo  no se encuentra instalado. Entonces lo instalo ejecutando:

apt -y update
apt -y install sudo

Uso y configuración

El archivo principal de configuración de sudo es /etc/sudoers , y no se recomienda editarlo manualmente. Para modificar el comportamiento y configuración del programa se recomienda utilizar la utilidad visudo . A continuación se muestra el contenido, y sin comentarios del archivo /etc/sudoers  que se instala en Debian 10:

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

root ALL=(ALL:ALL) ALL 
%sudo ALL=(ALL:ALL) ALL

Las ultimas dos lineas configuran que todos los comandos pueden solo ser ejecutados por el usuario root (root… ) y por los que pertenecen al grupo sudo (%sudo… ).

La pantalla siguiente muestra que ocurre cuando el usuario admin1  intenta usar el comando para escalar a usuario root .

admin1 no puede usar sudo
El usuario no esta habilitado

Ejemplos de configuración

A través de diferentes casos de uso se mostraran diferentes ejemplos de como transferir privilegios de root a diferentes usuarios para que puedan o no ejecutar ciertos comandos con privilegios de «superuser» y de este modo no compartir la contraseña de root con muchos administradores.

Caso de uso 1

El siguiente ejemplo transfiere al usuario admin1  los privilegios del usuario root . Con esto admin1 ejecutara cualquiera de los comandos con privilegios de superusuario.

Se recomienda el uso de visudo para realizar las modificaciones de funcionamiento y configuración del comportamiento de sudo.

Se ejecuta visudo del siguiente modo:

visudo

Según sea el editor por defecto del sistema, abre el archivo /etc/sudoers para su edición. Agregue al final del archivo la linea siguiente:

admin1 ALL=(ALL:ALL) ALL

Se guardan los cambios, y se cierra el archivo.
Los cambios son tomados instantáneamente. Hemos agregado que el usuario admin1  puede ejecutar cualquier comando con privilegios de root  mediante el uso del comando.
La siguiente captura muestra la secuencia de comandos ejecutados por admin1  para mostrar el contenido del archivo /etc/sudoers y que es propiedad del usuario root . Observar que solo funciona cuando se ejecuta mediante sudo

admin1 habilitado para comando sudo
El usuario habilitado

Caso de uso 2

Transferir y permitir privilegios de root a un usuario admin2, pero deshabilitar algunos comando, en particular no debe poder apagar, ni reiniciar el sistema mediante comandos.

La configuración se realiza a continuación, considerando que el usuario admin2 ya esta creado en el sistema. Salvo indicación expresa los comandos son realizados por el usuario root y son las siguientes.

Con el comando visudo se agrega el siguiente contenido a la configuración de sudoers:


# Especificación de Cmnd_alias 
Cmnd_Alias SHUTDOWN = /usr/sbin/halt, /usr/sbin/shutdown, \ 
 /usr/sbin/poweroff, /usr/sbin/reboot, /usr/sbin/init, /usr/bin/systemctl 

# admin2 no puede ejecutar los comandos especificados en Cmnd_Alias 
admin2 ALL=(ALL:ALL) ALL, !SHUTDOWN

Esta captura siguiente muestra que efectivamente admin2 puede ejecutar sudo, pero no puede apagar el sistema mediante comandos.

admin2 con que sudo limitado
Usuario admin2 con algunos comandos no permitidos de escalar o ejecutar