Verificar los ejemplos en el archivo sudoers

En el post anterior agregamos directivas a /etc/sudoers (más comúnmente llamado archivo sudoers, a secas) a fin de permitir que dos usuarios «comunes y corrientes» realizaran tareas administrativas. En concreto, el usuario gacanepa debe poder utilizar el comando usermod, jperez debe tener acceso a aptitude, y ambos deben poder ejecutar shutdown para reiniciar o apagar el equipo. Mientras que para los casos individuales se requerirá que cada usuario ingrese su contraseña, en el último se espera que no exista esa necesidad. En este post verificaremos que los ejemplos en el archivo sudoers funcionen como lo esperamos.

Ejemplos en el archivo sudoers

En el primer ejemplo, el usuario gacanepa intentará cambiar la shell por defecto del usuario jperez sin utilizar el comando sudo (la cual permite acceder a los privilegios indicados por la directiva que agregamos en el post anterior). Luego de que falle la operación, utilizará sudo y volverá a intentarlo. Para comparar los resultados, mostramos en la Fig. 1 la shell por defecto de jperez antes y después de hacer el cambio:

cat /etc/passwd | grep jperez | cut -d: -f7
sudo usermod -s /bin/bash jperez
Verificación de permisos establecidos en /etc/sudoers
Figura 1 – Verificación de permisos establecidos en /etc/sudoers

Podemos hacer lo mismo para el usuario jperez y utilizar aptitude update (por ejemplo) para chequear, así como también que cualquiera de los dos usuarios intente reiniciar el equipo con shutdown -r now sin necesidad de ingresar contraseña.

Generalizando

En las directivas que agregamos al archivo sudoers podemos reconocer el siguiente patrón:

QUIÉN DÓNDE=(COMO QUIÉN) QUÉ
  • El QUIÉN indica a qué usuarios o alias se refiere la directiva.
  • En DONDE siempre veremos la palabra clave ALL que -para ser breves- podemos decir que representa el equipo en el que estemos trabajando.
  • COMO QUIÉN indica la cuenta de usuario cuyos privilegios serán «compartidos» para realizar QUÉ (el comando o conjunto de comandos).

Analicemos las reglas que agregamos con anterioridad al archivo sudoers:

  • gacanepa ALL=(root) USUARIOS indica que el usuario gacanepa podrá ejecutar los comandos listados en el alias USUARIOS con permisos de root en el equipo actual.
  • jperez ALL=(root) PAQUETES nos dice que jperez podrá ejecutar los comandos listados en PAQUETES con permisos de superusuario en el equipo actual.
  • ADMINISTRADORES ALL=NOPASSWD:/sbin/shutdown indica que los usuarios que integran el alias ADMINISTRADORES podrán utilizar /sbin/shutdown en el equipo actual sin necesidad de ingresar su contraseña (NOPASSWD).

Alternativamente, en QUIÉN podemos especificar un grupo de Linux utilizando el signo %. Por ejemplo,

%www-data ALL=(root) /usr/sbin/apache2ctl

permitirá que cualquier usuario que pertenezca al grupo www-data pueda detener, iniciar, reiniciar, etc. el servidor web Apache.

¡Espero que les sea útil!