Configuración de cuotas de disco

En esta práctica del módulo de Sistemas Operativos Monopuesto, profundizaremos en el control y administración avanzada de los recursos de almacenamiento mediante la configuración de cuotas de disco. Aprenderemos a limitar el espacio máximo que puede ocupar un usuario en un directorio o partición específica (ej. 100 MB), analizando el comportamiento del sistema operativo y los mensajes de error devueltos al rebasar dicho límite.

Objetivo:

Implementar cuotas de almacenamiento por usuario en un entorno operativo, configurar los umbrales de advertencia y bloqueo, y verificar de forma práctica el error generado al intentar superar la capacidad asignada.

Escenario:

  • Un equipo con sistema operativo GNU/Linux (entorno recomendado para la gestión nativa de cuotas de bloques y inodos) o Windows.
  • Acceso a la terminal o consola de comandos con privilegios de superusuario (sudo) o administración.
  • Un usuario de pruebas creado en el sistema (ej. estudiante1).

Instrucciones:

Opción A: Entorno GNU/Linux (Gestión de cuotas con quota y edquota)

  1. Preparación del sistema de archivos y montaje con soporte de cuotas:
    • Abre una terminal con privilegios de superusuario.
    • Edita el archivo de configuración de puntos de montaje /etc/fstab para añadir las opciones usrquota y grpquota en la partición donde deseas aplicar la restricción (por ejemplo, /home).
    • Remonta la partición para aplicar los cambios de manera dinámica:
      sudo mount -o remount /home
  2. Inicialización y activación del subsistema de cuotas:
    • Genera los archivos de control de cuotas en la raíz del sistema de archivos mediante el comando:
      sudo quotacheck -cumav
    • Activa las cuotas de usuario en la partición:
      sudo quotaon -v /home
  3. Asignación del límite de 100 MB al usuario de pruebas:
    • Edita la tabla de cuotas asignada al usuario estudiante1 ejecutando:
      sudo edquota -u estudiante1
    • Configura los bloques en kilobytes. Para establecer un límite estricto de 100 MB (102.400 KB), define el límite blando (soft limit) en 100000 y el límite duro (hard limit) en 102400. Guarda y cierra el editor.
  4. Verificación y prueba de desbordamiento de cuota:
    • Inicia sesión con el usuario estudiante1 (o cambia a su contexto mediante su - estudiante1).
    • Intenta crear un archivo de 120 MB (superior al límite establecido) utilizando el comando dd:
      dd if=/dev/zero of=~/archivo_prueba.img bs=1M count=120
    • Observa el mensaje de error devuelto por la consola (por ejemplo, "Escr. disco no a favor: Disquete o disco lleno" o "Disk quota exceeded").
    • Consulta el estado actual de consumo ejecutando: quota.

Opción B: Entorno Windows (Cuotas de Volumen NTFS)

  1. Configuración desde el Explorador de archivos:
    • Abre el Explorador de archivos, haz clic derecho sobre la unidad NTFS objetivo (ej. D:) y selecciona Propiedades.
    • Accede a la pestaña Cuota y haz clic en el botón Mostrar configuración de cuota.
    • Habilita las opciones "Habilitar administración de cuotas" y "Denegar espacio en disco a usuarios que superen el límite de cuota".
    • Establece el límite de espacio predeterminado para nuevos usuarios en 100 MB y el nivel de advertencia en 90 MB.
    • Guarda los cambios, intenta almacenar un archivo superior a ese tamaño con un usuario estándar en dicha unidad y comprueba el aviso emergente de Windows.

Verificación

  1. Comprueba que el sistema de ficheros tiene habilitado correctamente el soporte de cuotas (mediante quotaon -p o las propiedades de Windows).
  2. Verifica que los límites de 100 MB han quedado registrados correctamente para el usuario de pruebas.
  3. Confirma que al intentar superar el límite establecido, el sistema operativo bloquea la operación de escritura y emite el mensaje de error correspondiente.

Preguntas de reflexión:

  1. ¿Qué diferencia operativa existe entre el límite blando (soft limit) y el límite duro (hard limit) en la gestión de cuotas de disco bajo Linux?
  2. ¿Por qué es necesario ejecutar herramientas como quotacheck antes de activar las cuotas en un sistema de archivos ext4, y qué función cumplen los archivos de base de datos de cuotas ocultos?
  3. ¿Cómo impacta la implementación de cuotas de disco en la prevención de ataques de denegación de servicio (DoS) a nivel local causados por el agotamiento intencionado del espacio de almacenamiento?
Haz clic aquí para ver la solución orientativa

1. ¿Qué diferencia operativa existe entre el límite blando (soft limit) y el límite duro (hard limit)?

El soft limit (límite blando) es un umbral de advertencia configurable que permite al usuario superar temporalmente la cuota asignada durante un periodo de gracia determinado (por defecto 7 días), recibiendo avisos recurrentes por parte del sistema.

En cambio, el hard limit (límite duro) representa el tope absoluto e inflexible de almacenamiento: una vez alcanzado, el sistema operativo bloquea de manera inmediata cualquier intento de escritura adicional, devolviendo un error de disco lleno sin conceder ningún margen de maniobra.


2. ¿Por qué es necesario ejecutar quotacheck antes de activar las cuotas y qué función cumplen los archivos de base de datos?

El comando quotacheck escanea todo el sistema de archivos para examinar y contabilizar de forma precisa el uso actual de espacio y ficheros por parte de cada usuario, generando los archivos de metadatos ocultos (como aquota.user y aquota.group).

Estos archivos actúan como la base de datos transaccional interna que el kernel consulta en tiempo real para verificar los límites sin necesidad de recorrer todo el disco en cada operación de escritura.


3. ¿Cómo impacta la implementación de cuotas en la prevención de ataques de denegación de servicio (DoS) a nivel local?

Al limitar estrictamente el espacio máximo que un usuario o aplicación no privilegiada puede consumir en las particiones críticas del sistema, se mitiga el riesgo de que un proceso descontrolado, un bucle de generación de logs o un usuario malintencionado agoten por completo el espacio libre del disco duro.

Esto previene la caída del sistema operativo, el bloqueo de servicios esenciales y la corrupción de datos por falta de espacio para archivos temporales.