Cuotas de disco

Introducción

El servicio de cuotas de disco es el mecanismo que tiene Linux para poder limitar el almacenamiento a los usuarios del sistema. Una forma de proteger un equipo servidor es limitar la capacidad de almacenamiento de cada usuario. Este servicio se usa con ciertos servidores que limitan el almacenamiento como por ejemplo los servidores de correo o los servidores web.

Si un usuario no tuviera límite de almacenamiento podría llegar a llenar toda una partición e impedir el trabajo de otros usuarios o del mismo sistema.

Para poder instalar las cuotas de disco es necesario tener el núcleo Linux compilado con el soporte de quotas. La mayoría de las distribuciones traen un núcleo ya reparado. Si no es así tendríamos que compilar nuestro propio núcleo. Esto lo podemos comprobar ejecutando

dmesg grep quotas

Si la orden responde con un mensaje, entonces tenemos el núcleo listo. Si e sistema da la callada por respuesta entonces tendremos que compilar un nuevo núcleo.

Instalación

Para instalar las "quotas" de disco es necesario tener acceso al sistema como root para poder modificar ciertos ficheros y establecer las cuotas.

Ahora tenemos que editar el fichero /etc/fstab y en la partición o particiones que quiera poder establecer las cuotas de almacenamiento añadiremos la directiva usrquota o grpquota. En el primer casoa establece quotas a nivel de cada usuario y en el segundo segunda para cada grupo de usuarios.

El siguiente ejemplo establece el sistema de cuotas para las particiones /home (/dev/hda5) y /var (/dev/hda6).

/dev/hda5 /home ext2 defaults,usrquota 1 2

/dev/hda6 /var ext2 defaults,usrquota 1 3

Ahora debemos crear los ficheros quota.user, un fichero que mantiene información sobre cada partición. El fichero se crea en el directorio superior de la partición. Para crearlo ejecutamos:

/sbin/quotachek -av

y además nos mostrará un texto similar a:

Scanning /dev/hda5 /home] done Checked 321 directories and 2619 files

Using quotafile /home/quota.user Updating in-core user quotas

El caso de asignar quotas a grupos es similar, en este caso se genera el fichero quota.grp.

Para que las cuotas tengan efecto es necesario volver a montar las particiones de nuevo. Tal vez haya que reiniciar el sistema. Para evitar problemas asegúrese de que el fichero /etc/fstab no tiene errores.

Asignar cuotas

Ya sólo queda asignar cuotas a los usuarios del sistema con la orden edquota. Por ejemplo vamos a asignar cuotas al usuario practicas en el directorio /home. Para esto ejecutamos:

edquota -u practicas

Esta orden arranca el editor del sistema y nos encontramos algo parecido a la siguiente:


Quotas for user practicas:

/dev/hda5:

blocks in use:29612,limits (soft=0,hard=0)

inodes in use: 2620, limits (soft = 0, hard = 0)

/dev/hda6:

blocks in use:49613,limits (soft=0,hard=0) inodes in use:

1620, limits (soft = 0, hard = 0)

La primera línea de cada partición expresa el número máximo de almacenamiento expresado en bloques. La segunda línea expresa el número máximo de ficheros que puede tener el usuario. Un cero indica ilimitado. Por otro lado existen los límites "soft" y "hard". El primero, el límite "soft", es un límite que se puede sobrepasar en durante un periodo de gracia. El límite "hard" no se puede sobrepasar nunca.

Para asignar las cuotas sólo tenemos que modificar el número que hay entre paréntesis; por ejemplo, para limitar la quota de disco del usuario practicas a 1 Mb pondria lo siguiente:


Quotas for user practicas:


/dev/hda5:

blocks in use:29612,limits (soft=1024,hard=1024)

inodes in use: 2620, limits (soft = 0, hard = 0)

Otra opción, quizas más sencilla, para establecer el sistema de cuotas por usuarios es tener un usuario "prototipo", con la cuota correspondiente ajustada, y luego asignarsela al resto de los usuarios del sistema con la siguiente orden:

edquota -u -p prototipo usuario

Siendo prototipo el usuario generico y usuario el usuario al que le quiere asignar la cuota.

Si quremos ver las cuotas asignadas, podemos ejecutar:

repquota -a


Block limits File limits User used soft hard grace used soft hard grace
root

-- 17 0 0 3 0 0 ftp
-- 1 0 0 1 0 0 practicas
-- 19043 2560 3072 1146 0 0