Limitar el acceso de sudo con el archivo sudoers
En este paso, aprenderás cómo restringir los privilegios de sudo de un usuario a comandos específicos utilizando el archivo sudoers. Esto implementa el principio de privilegio mínimo, que establece que los usuarios solo deben tener los privilegios mínimos necesarios para realizar sus tareas.
Comprender el archivo sudoers
El archivo /etc/sudoers controla quién puede usar el comando sudo y qué comandos puede ejecutar. Este archivo nunca debe editarse directamente con un editor de texto normal, ya que errores de sintaxis podrían bloquearte del sistema. En su lugar, siempre utiliza el comando visudo, que comprueba los errores de sintaxis antes de guardar.
Editar el archivo sudoers
Para editar el archivo sudoers de forma segura, utiliza el comando visudo:
sudo visudo
Esto abrirá el archivo sudoers en el editor predeterminado (generalmente nano o vi).
Comprender la sintaxis de sudoers
La sintaxis básica para una entrada de sudo en el archivo sudoers es:
user_or_group host=(run_as_user:run_as_group) NOPASSWD: commands
Donde:
user_or_group: El usuario o grupo al que se aplica esta regla.
host: El nombre del host donde se aplica esta regla (generalmente ALL).
run_as_user: El usuario como el que se ejecutarán los comandos (generalmente ALL, lo que significa root).
run_as_group: El grupo como el que se ejecutarán los comandos (puede omitirse).
NOPASSWD: Etiqueta opcional que permite ejecutar comandos sin ingresar una contraseña.
commands: Los comandos específicos que se pueden ejecutar con sudo.
Agregar acceso restringido de sudo
Desplázate hasta el final del archivo y agrega la siguiente línea para otorgar a trusted_advisor permisos para ejecutar solo los comandos cp y mv sin contraseña:
trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv
Para guardar el archivo en nano, presiona Ctrl+O, luego Enter, y para salir, presiona Ctrl+X.
Probar el acceso restringido de sudo
Ahora probemos si el acceso restringido de sudo funciona como se espera. Primero, creemos un archivo de prueba en el directorio actual:
echo "This is a test file" > important_file.txt
Ahora, cambiemos al usuario trusted_advisor:
su - trusted_advisor
Ingresa la contraseña cuando se te solicite.
Intenta copiar el archivo al directorio root, lo cual debería estar permitido:
sudo cp /home/labex/project/important_file.txt /root/
Esto debería tener éxito sin pedir una contraseña.
Ahora, intenta ejecutar un comando que no está en la lista permitida, como cat:
sudo cat /root/important_file.txt
Deberías obtener un error de permiso denegado porque cat no está en la lista de comandos permitidos.
Finalmente, verifica que el archivo se haya copiado al directorio root:
sudo ls /root/
Deberías ver important_file.txt en la salida.
Sal de la sesión del usuario trusted_advisor:
exit
Eliminar el archivo de prueba
Para limpiar, elimina el archivo de prueba:
sudo rm important_file.txt