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 

  1. sudo -V

Si no está instalado se accede al usuario root y se procede a la instalación

Acceder a root

  1. su

Instalar sudo

  1. apt install sudo

Trabajar con sudo

Para trabajar con sudo los comandos introducidos deben ir acompañados de la palabra sudo al inicio:

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

  1. # Please consider adding local content in /etc/sudoers.d/ instead of
  2. # directly modifying this file.
  3. #
  4. # See the man page for details on how to write a sudoers file.
  5. #
  6. Defaults env_reset
  7. Defaults mail_badpass
  8. Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
  9. # Host alias specification
  10. # User alias specification
  11. # Cmnd alias specification
  12. # User privilege specification
  13. root ALL=(ALL:ALL) ALL
  14. # Allow members of group sudo to execute any command
  15. %sudo ALL=(ALL:ALL) ALL
  16. # See sudoers(5) for more information on "#include" directives:
  17. #includedir /etc/sudoers.d

Revisión del código que incorpora por defecto el archivo sudoers:

  • Las tres líneas con el texto resaltado  de la parte superior son ajustes de configuración de sudo.
  • La dos líneas con texto resaltado de la parte inferior son dos reglas de acceso: una regla que permite el acceso total al usuario root y otra regla que permite el acceso total al grupo sudo.

PRIVILEGIOS

Las reglas de configuración de privilegios mantiene la siguiente estructura:

  1. [usuario_receptor] [host] = ([usuario]:[grupo]) [comando]
  • receptor: Usuario o grupo que recibe el acceso o privilegio
  • host: Nombre del sistema, servidor local, dominio, IP,...
  • usuario: Usuario o usuarios que permiten el acceso al usuario o grupo receptor
  • grupo: Grupo o grupos que permiten el acceso al usuario o grupo receptor
  • comando: Comandos o comandos

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.

  1. [usuario] ALL = (ALL:ALL) ALL

Para establecer acceso total al usuario jose: 

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

  1. %[grupo] ALL=(ALL:ALL) ALL

Para establecer acceso total al grupo amigos:

  1. %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

  1. [usuario] ALL = (ALL:ALL) [comando]

Ejemplo de acceso comando específico

  1. javi ALL = (ALL:ALL) /usr/bin/apt update

Acceso a un sistema específico

  1. javi 192.168.1.105 = (ALL:ALL) ALL

Acceso a un comando específico sin requerimiento de contraseña

  1. %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

  1. [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

  1. [tipo_alias] [nombre] = [valor] : [nombre2] = [valor2] : [nombre3] = [valor3]

Tipos de Alias (4)

  • Host_Alias: host (equipo,servidor local, dominio, IP,...)
  • User_Alias: nombre de usuario
  • Runas_Alias: ID de usuario administrador (se indica con la almohadilla delante)
  • Cmnd_Alias: comando

Configuración con Alias

Para establecer la regla se añaden los distintos Alias siguiendo el esquema de configuración de privilegios

  1. [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.

  1. #Alias
  2. Host_Alias HOST_SERVER = DebianServer
  3. Cmnd_Alias CMND_IPTABLES = /sbin/iptables
  4. #Reglas
  5. %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. 

  1. #Alias
  2. Host_Alias HOST_SERVER = DebianServer
  3. Cmnd_Alias CMND_IPTABLES = /sbin/iptables
  4. Cmnd_Alias CMND_IPTABLESNO = !/sbin/iptables
  5. #Reglas
  6. %iptable HOST_SERVER = (ALL:ALL) CMND_IPTABLES
  7. 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

  1. #Alias
  2. Host_Alias HOST_SERVER = DebianServer
  3. Cmnd_Alias CMND_IPTABLES = /sbin/iptables
  4. Cmnd_Alias CMND_IPTABLESNO = !/sbin/iptables
  5. #Reglas
  6. jose HOST_SERVER = (ALL:ALL) CMND_IPTABLESNO
  7. %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

  1. # Host alias specification
  2. Host_Alias SISTEMA = DebianCasa
  3. Host_Alias SERVIDOR = localhost

  4. # User alias specification
  5. User_Alias USR_JOSE = jose
  6. User_Alias USR_LUCAS = lucas

  7. # Cmnd alias specification
  8. Cmnd_Alias CMD_APT_UPDATE = /usr/bin/apt-get update
  9. Cmnd_Alias CMD_APT_UPGRADE = /usr/bin/apt-get upgrade
  10. Cmnd_Alias COMANDO_CLEAN = /usr/bin/apt-get clean

  11. # User privilege specification
  12. USR_JOSE SISTEMA = CMD_APT_UPDATE
  13. USR_LUCAS ALL = CMD_APT_UPGRADE
  14. 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.

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

Comentarios: 0

Para poder comentar es necesario iniciar sesión



Este dominio utiliza cookies de terceros para crear estadísticas y publicidad personalizada. Si continúa navegando está aceptando su uso