20/12/2006

Configuración - Sudo II

Utilizando sudo para delegar privilegios

En algunas ocasiones es útil delegar privilegios de superusuario a un usuario normal de FC; sin embargo, darle la clave del superusuario a dicho usuario sería poco conveniente porque le dá total control del sistema. El sistema sudo permite delegar privilegios programa a programa para cada usuario.

El archivo de configuración se ubica en /etc/sudoers, el cual controla quién puede hacer qué, y se ejecuta por medio del comando sudo.

Para habilitar con sudo, que un usario pueda ejecutar una aplicación que solicite acceso de root, modificamos en el archivo sudoers:

su -

echo "nombreusuario ALL=/bin/netstat,/sbin/ifconfig" >> /etc/sudoers

Le estamos solicitando a sudo que permita al usuario "nombreusuario" ejecutar los comandos netstat e ifconfig

Esta entrada contiene

el nombre de usuario "nombreusuario"
las computadoras "ALL" (En las que el usuario puede ejecutar...) Útil si el archivo sudoers está compartido entre varias máquinas.
lista de comandos "/bin/netstat,/sbin/ifconfig"

Se debe ser cuidadoso al seleccionar la lista de comandos que van incluidos en la lista, porque si uno de esos comandos da acceso al shell, el usuario podrá ser capaz de ejecutar cualquier cosa.

Basados en la configuración anterior, podemos decir que dicho usuario autorizado puede ejecutar:

sudo /sbin/ifconfig

Recuerden que la clave solicitada es la del mismo usuario, NO la del root.

Incluyo la ruta completa /sbin/ifconfig, debido a que un usuario normal, normalmente no tiene incluida la ruta /sbin en su variable de entorno PATH, o ruta de búsqueda para archivos ejecutables, sería bueno añadirla... :-)

Si queremos que sudo no vuelva a preguntar por la clave, ya que tiene predispuesto volver a preguntar a los 5 minutos de recibir la última solicitud de contraseña entonces deberíamos configurar /etc/sudoers de la siguiente manera...

nombreusuario ALL=NOPASSWD:/bin/netstat,/sbin/ifconfig

De forma predeterminada, sudo utiliza al usuario root para ejecutar la lista de comandos, pero también puede utilizar cualquier otro usuario del sistema, por ejemplo

pedro ALL=(juan) NOPASSWD:/usr/local/bin/checkstatus

Con esta configuración le estamos diciendo a sudo que permita al usuario "pedro" ejecutar el comando "
/usr/local/bin/checkstatus" como si fuera el usuario "juan".

Luego "pedro" podrá utilizar sudo con la opción -u para especificar la ID de usuario:

sudo -u juan checkstatus


No hay comentarios.: