Sudo

De CURE - Informática
Saltar a: navegación, buscar

sudo

Control de privilegios de usuarios mediante sudo.

Comandos: su, sudo, visudo

Archivos: /etc/sudoers


Objetivos

Configurar privilegios de usuarios mediante sudo, definiendo grupos de usuarios, grupos de comandos, y grupos de máquinas desde donde puede hacerse sudo a la máquina local.

Esquema de privilegios.

  • Comandos:
CMDS_AUDITOR:
CMDS_USUARIOS:
  • Usuarios:
AUDITORES:
ADM-USUARIOS:
  • Máquinas:
CUREROCHA:
  • Los usuarios AUDITORES pueden correr sus comandos desde cualquier máquina; los usuarios ADM-USUARIOS sólo pueden correr sus comandos desde las máquinas CUREROCHA.

Crear este esquema de privilegios escribiendo un archivo /etc/sudoers adecuado, y probar los privilegios concedidos.


Software

Paquete: sudo, incluido en la instalación básica. Comandos: sudo, visudo, gksudo. su Páginas man: sudo, visudo, sudoers, gksudo. Archivos: /etc/sudoers Procedimiento

1. Definir el esquema de privilegios:
- grupos de comandos para diferentes objetivos, e.g. respaldo, auditoría, adm-usuarios.
- grupos de máquinas desde donde puede ejecutarse sudo.
- grupos de usuarios para diferentes tareas, e.g. respaldo, auditores, adm-usuarios.
2. Editar el archivo /etc/sudoers con el utilitario visudo.
3. Probar los privilegios concedidos: que cada usuario tiene los que debe tener, y no tiene los que no debe tener.


Modificación de sudoers para reglas de acceso.

El el archivo /etc/sudoers es donde se guardan todas las reglas de acceso, los alias y las opciones por defecto de sudo. En él estableceremos "quien puede ejecutar que y como" desde sudo.

Editamos el archivo sudoers (preferentemente con el comando visudo) -> sudo visudo -f /etc/sudoers

Dentro del archivo tenemos un campo llamado #User alias specification Con los alias nos referimos a cualquier tipo de elemento: comandos , usuarios ( normales o privilegiados) y hosts. Desde el momento en que hemos definido un alias para un elemento, puede utilizarse en cualquier lugar, incluida la definición de un alias , en el que se espere un usuario, un comando o un host. La forma general de una definición de alias es:

Tipo_Alias NOMBRE_ALIAS = elemento1, elemento2, elemento3, ......

Tipo_Alias Puede ser uno de los siguientes:

  • Cmnd_Alias: Para definir alias de comandos.
  • User_Alias: Para definir alias de usuarios "normales".
  • Runas_Alias: Para definir alias de usuarios "privilegiados".
  • Host_Alias: Para definir alias de hosts.

Luego para darle atribuciones a los usuarios, debajo del comentario # User privilege specification, hay que agregar una linea con esta sintaxis:

<usuario o User_Alias> <hosts o Host_Alias> = (<como quien se ejecuta el comando(*)>) <comandos o Cmnd_Alias>

(*) Si se omite este paréntesis, los comandos se ejecutan como root.

Fuente: http://www.rpublica.net/sudo/sudoers.html

Archivo /etc/sudoers que viene por defecto:

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL) ALL
# Allow members of group sudo to execute any command after they have
# provided their password
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=(ALL) ALL
#
#includedir /etc/sudoers.d
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL



Como ejemplo mostramos el archivo /etc/sudoers ya modificado:

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
# Host alias specification
# User alias specification
User_Alias AUDITORES = pgarcia, jguida, vagonbar
# Cmnd alias specification
Cmnd_Alias CMD_AUDITOR = /bin/less, /bin/more, /bin/cat, /usr/bin/tail, /usr/bin/head
# User privilege specification
root ALL=(ALL) ALL
AUDITORES ALL = CMD_AUDITOR
# Allow members of group sudo to execute any command after they have
# provided their password
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=(ALL) ALL
#
#includedir /etc/sudoers.d
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL


Impedir sudo su root

Para trabajar como root se puede hacer sudo su root o sudo su

Pasando de trabajar como <Usuario>@<maquina> a root@maquina

La idea es impedir trabajar como root, pero sin quitar privilegios a los administradores.

Por defecto el comando su se encuentra en /bin/su Se debe editar el archivo /etc/sudoers -> sudo visudo -f /etc/sudoers Se agregan las siguientes lineas

Cmnd_Alias SUDOSU = /bin/su "", /bin/su root
%admin ALL=(ALL) ALL, !SUDOSU

El archivo completo queda de esta manera:

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults	env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification
Cmnd_Alias SUDOSU = /bin/su "", /bin/su root
# User privilege specification
root	ALL=(ALL) ALL

# Allow members of group sudo to execute any command after they have
# provided their password
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=(ALL) ALL
#
#includedir /etc/sudoers.d

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL, !SUDOSU


Referencias

# Créditos: Nicolás Guerra, Marcos Rodríguez. 
   * Sudoers. Ubuntu Community. Ubuntu Documentatio.
     https://help.ubuntu.com/community/Sudoers