Mostrando entradas con la etiqueta permisos especificos. Mostrar todas las entradas
Mostrando entradas con la etiqueta permisos especificos. Mostrar todas las entradas

sábado, 11 de junio de 2011

Dar permisos de administrador sólo a ciertos programas ejecutados por ciertos usuarios

En ocasiones, muchos programas necesarios para el trabajo de ciertos usuarios o grupos de usuarios necesitan ser ejecutados como root. Sin embargo debido a la política de seguridad de nuestra organización no podemos darle acceso a todo el sistema. Para solucionar esto, Linux cuenta con un comando llamado SUDOERS. Que una vez configurado nos ayudará a especificar permisos especiales para grupos o usuarios.

Descripción
SUDOERS es una lista en donde se agregan usuarios asociados a ciertos comandos qué sin esta configuración sólo podrían ser ejecutados por el root.
Básicamente se componen por aliases de comandos.

Hay cuatro tipos de alias:
User_Alias, Runas_Alias, Host_Alias y Cmnd_Alias.

User_Alias ::= NAME '=' User_List

Runas_Alias ::= NAME '=' Runas_List

Host_Alias ::= NAME '=' Host_List

Cmnd_Alias ::= NAME '=' Cmnd_List

NAME ::= [A-Z]([a-z][A-Z][0-9]_)*

Donde NAME es el nombre del comando a invocar.
User_List la lista de usuarios permitidos.
Host_List la lista de servidores permitidos.
Cmnd_List la lista de comandos.

Para mayor información revisa el manual de SUDOERS.
http://linux.die.net/man/5/sudoers

Ejemplo.
Tengo un servidor web con DNS dinámico. Para que asocie el ip dinámico que me da mi provedor de internet con un nombre (harpia.no-ip.org) debo estar ejecutando un comando llamado noip2 .
Sin embargo, estoy cansado de tener que ejecutar ese comando como root. Se puede solucionar de muchas formas pero dado todo lo que vimos con SUDOERS lo vamos a hacer así.

Práctica
Lo primero que pensamos es modificar el archivo sudoers ubicado en:
/etc/sudoers (cómo superusuario obviamente!)
ATENCION: el archivo originalmente no se podrá editar porque ni siquiera el dueño (root) tiene permisos de escritura. Si los cambiamos (sudo chmod o+w sudoers) habremos cambiado la configuración de sudoers y no podremos volver a utilizar el comando sudo! Por tanto ni siquiera podremos volver a editar sudoers para regresarlo a su forma original. Si te pasó esto revisa lo siguiente: http://kubuntuforums.net/forums/index.php?topic=3114059.0
También puedes volver a editar el archivo entrando al kernel a prueba de fallos.
Para realizar esto necesitaremos del comando visudo, un editor de texto que sólo modifica al archivo sudoers.

Ejemplo para apagar la computadora sin ser root
# /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

# Uncomment to allow members of group sudo to not need a password
# %sudo ALL=NOPASSWD: ALL

# Host alias specification

# User alias specification
User_Alias USERS = juan, juanlternate
# Cmnd alias specification
Cmnd_Alias APAGAR = /sbin/shutdown -h now, /sbin/halt, /sbin/reboot
Cmnd_Alias IP = /usr/local/bin/noip2
# User privilege specification
# Especificaciones de los usuarios
root ALL=(ALL) ALL
USERS ALL=NOPASSWD: APAGAR,/usr/local/bin/noip2
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL