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