5.3. Cuotas

La cuota de disco permite establecer un límite máximo en el número de ficheros creados o el espacio ocupado por un usuario (cuota de usuario) o por el conjunto de usuarios que pertenecen a un grupo (cuota de grupo).

5.3.1. Activación

Para hacer uso de ellas es necesario:

  1. Instalar el paquete quota:

    # apt install quota
    
  2. Cargar el módulo de cuotas:

    # echo "quota_v2" > /etc/modules
    # modprobe quota_v2
    

    La primera línea posibilita que el módulo se cargue durante cada arranque, mientras que el segundo que se cargue en la sesión actual.

  3. Añadir la opción usrquota (y grpquota si se quieren las cuotas de grupo) en la línea de /etc/fstab correspondiente a cada fichero en el que se quiera habilitar las cuotas:

    Nota

    En sistemas ext4 que es lo habitual en linux.

    /dev/sda7   /home       ext4  defaults,usrquota    0    1
    

    En este caso se ha habilitado sólo para el sistema de ficheros encargado de albergar los directorios personales de usuario (/home). Para que tome efecto, inmediato este cambio habrá que volver a montar la partición:

    # mount -o remount /home
    
  4. Crear el fichero que almacenará las cuotas y llevará la cuenta de cuánto ha ocupado cada usuario:

    # quotacheck -cvagu
    
  5. Activar la cuota del sistema (también se puede reiniciar el sistema):

    # quotaon /home
    

    o bien, haciendo uso del servicio de debian:

    # invoke-rc.d quota restart
    

Llegados a este punto ya estarán habilitadas las cuotas, lo cual podrá comprobarse del siguiente modo:

# quotaon -p /home
group quota on /home (/dev/sda7) is off
user quota on /home (/dev/sda7) is on
# repquota -v /home
Report for user quotas on device /dev/mapper/VGserver-home
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      13       0       0      0       2     0     0      0
usuario   --      19       0       0      0      11     0     0      0

Es conveniente que periódicamente, por ejemplo una vez a la semana, se comprueben las cuotas de usuario por lo que sería conveniente añadir a cron la siguiente orden:

quotacheck -vagu

Advertencia

En esta orden para cron no añada la opción -c, puesto que recrearía el fichero y nos haría perder todas las cuotas ya establecidas para los usuarios.

5.3.2. Definición

Habilitadas las cuotas toca establecerlas para los usuarios. Fundamentalmente hay dos métodos:

setquota

Sirve para modificar directamente la cuota en la línea de comandos:

# setquota -u nombre_usuario  1024  1024   0  0  /home

Los dos primeros números están expresados en bloques de 1K y significan el límite de ocupación, mientras que los dos segundos expresan el número áximo de ficheros que se le permite crear al usuario «nombre_usuario» en el sistema de fichero /home. El hecho de que existan dos límites se debe a que el primero es un límite blando, que puede sobrepasarse durante un tiempo de gracia, mientras que el segundo es un límite duro, que no puede sobrepasarse en ningún caso.

En nuestro caso hemos hecho coincidir ambos, pero si hubieras querido hacer uso de ambos límites y establecer un tiempo de gracia (en segundos), puede usarse a continuación la orden con la opción -t para fijar un límite común a todos los usuarios (o grupos), o -T para establecerlo individualmente para cada usuario (o grupo):

# setquota -t -u $((24*60*60)) $((24*60*60)) /home

o bien:

# setquota -T -u nombre_usuario $((24*60*60)) $((24*60*60)) /home

En ambos casos, el primer tiempo (1h) es el tiempo de gracia para el límite de almacenamiento, y sel segundo para el número límite de ficheros.

Nota

Todos estos límites se fijan para la cuota de usuario. Si quieren establecerse cuotas de grupo, basta con utilizar la opción -g em vez de -u.

Nota

Si se usa la opción -a en sustitución del sistema de ficheros las cuotas (o los tiempos de gracia) se modificarán para todos los sistemas de ficheros.

edquota

El otro modo de establecer las cuotas de usuario es mediante un método interactivo que permite editarlas como si de un fichero se tratara:

# edquota -u usuario

Que nos presentará con el editor predeterminado lo siguiente:

Disk quotas for user usuario (uid 1000):
   Filesystem            blocks       soft       hard     inodes soft     hard
   /dev/sda7                  7          0       2048          4    0        0

Los significados de los números son exactamente los mismos que para setquota, aunque en este caso se nos informa también de cuál es la ocupación actual (en el ejemplo, 7K de ocupación y 4 ficheros creados).

Si se quieren modificar los tiempos de gracia puede usarse:

# edquota -tu

o:

# edquota -Tu usuario

de forma análoga a como se hacía con setquota.

Además de este sabor interactivo, edquota permite copiar las cuotas de un usuario en uno u otros usuarios con la opción -p:

# edquota -p usuario otro_usuario otro_usuario_mas

Un usuario particular siempre podrá conocer su estado de la cuota con la siguiente consulta:

$ quota

El administrador, por su parte, podrá conocer también las ajenas con sólo añadir el nombre de usuario a la orden:

# quota usuario_limitado

Aunque si quiere un informe de todas las cuotas, entonces es más recomendable:

# repquota -v /home