4 minute read

4.7.- Delegación de Privilegios a Usuarios del Sistema: SUDO

Práctica Nº4.-Sistemas RAID. ACLs y Cuotas. Delegación de Privilegios con Sudo

4.7.- Delegación de Privilegios a Usuarios del Sistema: SUDO

Advertisement

Para terminar con la presente práctica, aprenderemos a delegar privilegios de administración (root) a usuarios del sistema diferentes del root. En concreto, haremos uso del paquete software sudo, el cual nos permite delegar privilegios y ejecutar comandos del sistema en nombre del usuario root, o de cualquier otro. ¡¡Importante!! Dependiendo de la distribución GNU/Linux con la que estemos trabajando podremos encontrarnos el paquete sudo preinstalado y preconfigurado (p.e. Ubuntu), o no (p.e. Debian). En caso de no disponer de sudo habrá que instalarlo previamente para poder llevar a cabo la práctica: [root@linux]# apt-get install sudo

Por ejemplo, si tuviéramos instalado en nuestra máquina el software servidor apache, deberíamos tener una cuenta de usuario llamada www-data a través de la cual apache interactúa con el sistema. Si quisiéramos crear un directorio en nombre de dicho usuario, tendríamos la opción de suplantarlo mediante el comando "su www-data" (debe tener una shell válida) y después crear el directorio, o directamente hacer uso de sudo en el caso que se haya configurado correctamente para ello: [usuario@linux]$ sudo -u www-data mkdir directorio1 [root@linux]# sudo -u www-data mkdir directorio1

Otro ejemplo ilustrativo sería conceder privilegios en nombre del root a un usuario cualquiera del sistema pudiera instalar un programa en el sistema. Como puede advertirse a continuación, en el caso de que el usuario en nombre de quien ejecutamos el comando sea el root, puede omitirse (-u root) al ser este el usuario por defecto: [usuario@linux]$ sudo -u root apt-get install openshot [usuario@linux]$ sudo apt-get install openshot

¡¡Advertencia!! Al ejecutar un programa mediante sudo, éste nos solicitará nuestra password con la finalidad de corroborar que el usuario que lo esta ejecutando es el usuario al que se le concedieron los privilegios. Es decir, al solicitar sudo la password al usuario esta evitando que otro usuario pueda ejecutar comandos indebidamente (p.e. si nos dejáramos una sesión abierta, otro usuario podría ejecutar comandos privilegiados en nuestro nombre). En el caso de que la introducción de esta password nos resulte muy tedioso, o queramos ejecutar un comando del sistema a través del sudo de manera desatendida (sin estar presentes para poder introducir la password), podremos evitar su solicitud incluyendo la directiva NOPASSWD: en el archivo de configuración del sudo, tal como se explicará más adelante. 4.7.1.- Configuración de Sudo: /etc/sudoers.

Con la finalidad de gestionar los privilegios a conceder será necesario que el usuario

Seguridad Informática y Alta Disponibilidad – amartinromero@gmail.com 204

Práctica Nº4.-Sistemas RAID. ACLs y Cuotas. Delegación de Privilegios con Sudo

administrador root edite el fichero de configuración de sudo, /etc/sudoers. Para ello ejecutaremos el comando visudo, el cual hará uso de manera indirecta del editor nano, y al mismo tiempo hará una comprobación sintáctica de las modificaciones que realicemos antes de salir del editor. [root@linux]# visudo

La sintaxis que deberemos cumplir a la hora de asignar privilegios, por cada línea que añadamos en la configuración del sudo, deberá ser la siguiente (suponemos que mv1 es el nombre de la máquina, more /etc/hostname): <nombre usuario / grupo> <máquina> = ( <usuario suplantado> ) <comando> arturo mv1 = (root) /usr/bin/apt-get install proftpd, /usr/bin/apt-get install apache2 arturo ALL = (ALL) NOPASSWD: ALL %gadmin1 mv1 = (root) NOPASSWD: /sbin/route

Donde cada uno de los campos a incluir representa lo siguiente:  <nombre usuario / grupo>: se corresponde con el nombre de la cuenta de usuarios o grupo de usuarios a los que se les quiere dar permisos o privilegios administrativos. Deberá corresponderse con una cuenta de usuario o grupo registrada en el sistema. Además, en el caso de hacer referencia a un grupo, éste deberá ir precedido de un signo de tanto por cien, %, que advertirá de ello.  <máquina>: indicaremos sobre que máquina concedemos los permisos administrativos.

Normalmente será la máquina local, "mv1", "localhost", etc (more /etc/hostname). Puede usarse la palabra clave ALL para hacer referencia a cualquier máquina.  <usuario suplantado>: indicaremos el nombre de "en nombre de quien" llevamos a cabo esos privilegios administrativos. Generalmente será el usuario "root", en cuyo caso se podrá omitir.

En el caso de usar la palabra clave ALL querrá decir que el usuario o grupo de usuarios afectado podrá ejecutar comandos en nombre de cualquier usuario que haya dado de alta en el equipo.  <comando>: indicaremos que comando permitimos que ejecute el usuario o grupo de usuarios indicado. En el caso de ser más de un comando se separarán por comas. Se aconseja hacer uso de la ruta absoluta del path donde se encuentra el ejecutable. En el caso de usar la palabra clave

ALL querremos decir que el usuario o grupo de usuarios afectados podrá ejecutar cualquier comando del sistema en nombre del usuario suplantado. Además, existe la posibilidad de incluir la directiva NOPASSWD: con la finalidad de evitar que el usuario tenga introducir la password, una vez ejecutado un comando mediante sudo, que corrobore que es él a quien se le ha dado los privilegios para ejecutar el comando.

Además, con la finalidad de facilitar la configuración de sudo, dentro del archivo "/etc/sudoers" pueden definirse "alias", mediante los cuales se nos permitirá en una única línea conceder varios privilegios, en diferentes máquinas y a varios usuarios simultáneamente (sin necesidad de que pertenezcan a un mismo grupo). Para ello haremos uso de las directivas de configuración (son sensibles a mayúsculas y minúsculas):

A) Host_Alias: Nos permite crear "alias" para una o varias máquinas.

B) User_Alias: Nos permite crear "alias" para uno o varios usuarios.

C) Cmnd_Alias: Nos permite crear "alias" para uno o varios comandos.

Seguridad Informática y Alta Disponibilidad – amartinromero@gmail.com 205

This article is from: