Configuración de sudo
Configuración de sudo (sudoers)
La configuración de sudo se encuentra por defecto en el archivo sudoers (/etc/sudoers). Este archivo no solo permite establecer acceso a usuarios o grupos, también permite establecer distintos niveles de acceso a esos usuarios o grupos.
SUDO
Algunas distribuciones de Linux no incorporan sudo instalado por defecto. Un método simple para detectar si se encuentra instalado es comprobar su versión.
Comprobar versión
sudo -V
Si no está instalado se accede al usuario root y se procede a la instalación
Acceder a root
su
Instalar sudo
apt install sudo
Trabajar con sudo
Para trabajar con sudo los comandos introducidos deben ir acompañados de la palabra sudo al inicio:
sudo mkdir carpeta
Sudo comprobará la configuración y si el usuario dispone del suficiente nivel para acceder se continuará con la ejecución, si por el contrario no dispone de privilegios suficientes se denegará.
SUDOERS
Sudo, por defecto, incorpora una configuración básica que, en la mayoría de los casos, puede ser más que suficiente, sin embargo, para otros casos se requiere establecer distintos niveles de acceso para los distintos usuarios o grupos.
sudoers
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
Revisión del código que incorpora por defecto el archivo sudoers:
PRIVILEGIOS
Las reglas de configuración de privilegios mantiene la siguiente estructura:
[usuario_receptor] [host] = ([usuario]:[grupo]) [comando]
Acceso total
Para establecer el acceso total a un usuario, se sigue manteniendo el esquema de la configuración de privilegios. Se asigna el usuario receptor y la palabra ALL para el resto de parámetros.
[usuario] ALL = (ALL:ALL) ALL
Para establecer acceso total al usuario jose:
jose ALL = (ALL:ALL) ALL
Para los grupos es similar a los usuarios pero a los grupos se añade el símbolo % al inicio
%[grupo] ALL=(ALL:ALL) ALL
Para establecer acceso total al grupo amigos:
%amigos ALL=(ALL:ALL) ALL
Nota: Para que un usuario pueda heredar el privilegio de un grupo será necesario asignar ese usuario a ese grupo.
Nivel de Acceso
Para establecer un determinado nivel de acceso es necesario ser más específico en la configuración. Se puede especificar un determinado comando, un determinado equipo,...
Acceso a un comando específico
[usuario] ALL = (ALL:ALL) [comando]
Ejemplo de acceso comando específico
javi ALL = (ALL:ALL) /usr/bin/apt update
Acceso a un sistema específico
javi 192.168.1.105 = (ALL:ALL) ALL
Acceso a un comando específico sin requerimiento de contraseña
%javi ALL = (ALL:ALL) NOPASSWD:/usr/bin/apt autoremove
Nivel de Acceso con Alias
En la configuración de las reglas se pueden incorporar los datos mediante el concepto de alias, es decir, se asignan todos los datos a unos Alias con nombres fáciles de identificar y a continuación se declaran las reglas recurriendo a esos Alias.
Alias
Para crear un Alias se indica el tipo de Alias, el nombre del nuevo Alias y se asigna el valor
[tipo_alias] [nombre_alias] = [valor]
Para crear más de un alias del mismo tipo se puede simplificar añadiéndolos a continuación, separados por dos puntos
[tipo_alias] [nombre] = [valor] : [nombre2] = [valor2] : [nombre3] = [valor3]
Tipos de Alias (4)
Configuración con Alias
Para establecer la regla se añaden los distintos Alias siguiendo el esquema de configuración de privilegios
[Alias_tipo_user] [Alias_tipo_host] = ([usuario]:[grupo]) [Alias_tipo_Cmnd]
Ejemplo de acceso con Alias
Esta configuración permite al grupo iptable el acceso en un determinado equipo y de un determinado comando. A efectos prácticos, esta configuración indica que cualquier usuario que pertenezca al grupo iptable dispone del privilegio para trabajar con el programa iptables.
#Alias
Host_Alias HOST_SERVER = DebianServer
Cmnd_Alias CMND_IPTABLES = /sbin/iptables
#Reglas
%iptable HOST_SERVER = (ALL:ALL) CMND_IPTABLES
El orden de las reglas
La configuración anterior permite a un grupo el acceso al comando iptables. En el siguiente código se repite la configuración anterior pero se añade un nuevo alias y una nueva regla. Este nuevo alias realiza justamente la acción inversa que el anterior, es decir, restringe el comando iptables pero a un único usuario. Ante esta situación, el orden de las reglas puede afectar.
- #Alias
Host_Alias HOST_SERVER = DebianServer
Cmnd_Alias CMND_IPTABLES = /sbin/iptables
Cmnd_Alias CMND_IPTABLESNO = !/sbin/iptables
- #Reglas
%iptable HOST_SERVER = (ALL:ALL) CMND_IPTABLES
jose HOST_SERVER = (ALL:ALL) CMND_IPTABLESNO
Para entenderlo y teniendo en cuenta que el usuario jose pertenece al grupo iptable, la primera regla permite a jose el acceso al comando iptables y la segunda regla restringe a jose el acceso al comando iptables. Este orden determina que jose no dispone de acceso al comando iptables.
La configuración del código siguiente es igual al anterior pero invirtiendo el orden de las reglas
#Alias
Host_Alias HOST_SERVER = DebianServer
Cmnd_Alias CMND_IPTABLES = /sbin/iptables
Cmnd_Alias CMND_IPTABLESNO = !/sbin/iptables
#Reglas
jose HOST_SERVER = (ALL:ALL) CMND_IPTABLESNO
%iptable HOST_SERVER = (ALL:ALL) CMND_IPTABLES
En este caso la primera regla restringe a jose el acceso al comando iptables y la segunda regla permite a jose el acceso al comando iptables. Este orden si permite a jose el acceso al comando iptables.
Esta diferencia en el resultado de las dos configuraciones anteriores evidencia que el orden de las reglas de configuración puede resultar determinante, por todo ello se recomienda mantener el archivo sudoers correctamente organizado procurando así, evitar errores.
Ejemplo de acceso con Alias
# Host alias specification
Host_Alias SISTEMA = DebianCasa
Host_Alias SERVIDOR = localhost
# User alias specification
User_Alias USR_JOSE = jose
User_Alias USR_LUCAS = lucas
# Cmnd alias specification
Cmnd_Alias CMD_APT_UPDATE = /usr/bin/apt-get update
Cmnd_Alias CMD_APT_UPGRADE = /usr/bin/apt-get upgrade
Cmnd_Alias COMANDO_CLEAN = /usr/bin/apt-get clean
# User privilege specification
USR_JOSE SISTEMA = CMD_APT_UPDATE
USR_LUCAS ALL = CMD_APT_UPGRADE
USR_JOSE SISTEMA = COMANDO_CLEAN
En lugar de añadir las nuevas especificaciones al archivo sudoers se puede crear uno o más archivos en el directorio sudoers.d, asignando permisos 440 y registrando un nombre de archivo que permita ser más fácil de identificar.
Opciones de sudo
Los ajustes permiten personalizar opciones del programa como por ejemplo los valores por defecto de los intentos de contraseña permitidos y el tiempo de espera, con passwd_tries y passwd_timeout, respectivamente.
Defaults passwd_tries = 3, passwd_timeout = 5
Nota: En ocasiones es necesario cerrar sesión y abrir de nuevo para que tengan efecto los cambios.
Para poder comentar es necesario iniciar sesión