Con sudo podemos implementar control de acceso, en el que determinar que usuario ejecuta un determinado comando. Si un usuario necesita ejecutar un comando de root, sudo, verifica en su lista de permisos y si está permitido la ejecución de ese comando para ese usuario, entonces sudo se encarga de ejecutarlo. Esta lista de control de acceso, podemos encontrarla en el fichero /etc/sudoers. En resumidas cuentas, el escenario que presenta la utilidad sudo tiene 3 protagonistas principales.
- Sudo: comando con permisos de SUID, que los usuarios utilizan para ejecutar comandos, que por defecto no tienen permiso para ejecutar.
- Visudo: comando que permite al administrador modificar el fichero /etc/sudoers.
- /etc/sudoers: Archivo que indica a sudo que permisos tiene cada usuario para ejecutar cierto comando.
Sudo
A continuación se detallan algunas de las opciones que presenta sudo
- sudo -l: Nos indica que comandos podemos ejecutar con el usuario en cuestión.
$ sudo -l
User Pepito may run the following commands on this host:
(root) /sbin/ifconfig
(root) /sbin/lspci
- sudo -v: Por defecto, al ejecutar cualquier comando con sudo tenemos 5 minutos para, en caso de tener que volver a meter el comando, no tener que introducir la contraseña del usuario. Con -v podemos ampliar 5 minutos más este tiempo.
- sudo -u: Con el parametro -u podemos ejecutar comandos de otro usuario que no tiene porque ser root.
$ sudo -u peter /comando/de/peter
- sudo -e: Permite editar un fichero de root, siempre y cuando se tengan permisos en /etc/sudoers.
$ sudo -e /etc/inittab
- sudo -L: Nos muestra una serie de opciones que podemos configurar en el fichero /etc/sudoers
Visudo
Permite la edición del archivo de configuración de sudo /etc/sudoers. Invoca al editor que se tenga por defecto (normalmente "vi"). Cuando se ejecuta, bloquea el fichero sudoers de manera que nadie pueda modificarlo de forma concurrente por razones de seguridad. Otra cosa a tener en cuenta, es que visudo comprueba que el archivo esté bien configurado al cerrarlo, si hay algo que no le convence, nos avisará de ello.
>>> sudoers file: syntax error, line 15 <<<
What now?
Ante esta pregunta podemos ejecutar 3 acciones:
e: editar
x: salir sin guardar los cambios
Q: salir y guardar los cambios
Sudoers
En este fichero se establece que usuario puede ejecutar que comando y de que modo, generando una lista de control de acceso que puede ser tan detallada como se desee.
El fichero se divide en 3 partes:
1- Opciones: Permite definir ciertas características de comportamiento para los alias previamente creados. No entraremos en detalle en esta parte. Para más información visitar el enlace que aparece al final de la entrada.
2- Reglas de acceso: Mediante las reglas de acceso podemos configurar qué comandos serán ejecutados por qué usuario. El formato de las reglas, es el siguiente:
usuario host = comando1, comando2...comandoN
Usuario: Puede ser un usuario, un alias de usuario o un grupo
Host: Puede ser ALL (cualquier equipo), un solo equipo, un alias de equipo, una IP/mascara.
Comando: Cualquier comando con su ruta completa.
3- Alias: Se refiere a un usuario, un comando o un equipo. Engloba bajo un solo nombre una serie de elementos que después en la parte de definición de reglas serán aplicados bajo cierto criterio. La forma de creación de alias es la siguiente:
tipo_alias NOMBRE_DEL_ALIAS = elemento1, elemento2, elemento3, ...
tipo_alias define los elementos:
- Cmnd_Alias (comandos)
- User_Alias(usuarios)
- Runas_Alias(usuarios con privilegios)
- Host_Alias (equipos)
NOMBRE_DEL_ALIAS: Puede llevar letras, numeros o _ . Debe empezar por mayusculas.
elementos: varian dependiendo del alias. Algunos ejemplos son los siguientes.
Cmnd_Alias WEB = /etc/init.d/apache2, sudoedit /etc/httpd
User_Alias MYSQL_USERS= Pepin, Mochilo, Gazpacho, %mysql
Runas_Alias OPERADORES= #501, patricio
Host_Alias LANS= 192.168.0.0/24, 192.168.0.1/255.255.255.0
Aqui podeis encontrar un ejemplo práctico de la configuración del fichero /etc/sudoers.
Hasta aquí llegamos. En posteriores entradas entraremos más en profundidad en este tema que puede llegar a ser muy extenso :). Espero que con estas pinceladas, quede un poco más claro el funcionamiento de esta utilidad. En caso de dudas os recomiendo visitar el enlace que os dejo a continuación.
Fuente: Basado en el tutorial de Sergio Gonzalez Duran en linuxtotal.com
Nos vemos,
Víctor.
0 comentarios: