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