Cuotas de disco en Ubuntu

De todos es conocido el uso de cuotas (quota) en Linux, para limitar el uso que determinados usuarios y/o grupos de usuarios hacen sobre las particiones de disco. Este tutorial explicará de manera sencilla como instalar y configurar un sistema de cuota en disco.

Lo primero es entrar como root (sudo -s) e instalar el paquete:

apt-get install quota

A continuación editamos el fichero de particiones /etc/fstab y editamos las opciones de la partición (la cuarta columna), y añadimos (separados por comas) las palabras usrquota (si queremos restringir por usuario) y grpquota (o por grupo). En nuestro caso hemos modificado la partición de /home:

/dev/sda1 / ext3 errors=remount-ro 0 1
/dev/sda2 /home ext3 defaults,usrquota,grpquota 0 2
/dev/sda3 none swap defaults 0 0
proc /proc proc defaults 0 0

Una vez hecho esto hay que reiniciar la máquina (con reboot).

Una vez reiniciada la máquina se nos habrán creado los ficheros aquota.user y aquota.group en la raíz de la partición escogida antes (en nuestro caso /home).

Para restringir la cuota a un usuario usaremos el comando edquota -u username donde username será el nombre del usuario a restringir (pueden restringirse varios usuarios a la vez, si separamos los nombres de usuarios por espacios). Esto hará que se lance un editor de texto con un fichero donde se describe el uso actual y la restricción actual de bloques de disco e inodos (enlaces a ficheros dentro del sistema de ficheros) para el usuario. Se desciben por tanto los siguientes valores (cada valor corresponde a una columna en el fichero):

  1. Filesystem: Partición restringida.
  2. blocks: Número de bloques (por un bloque se entiende 1Kb de datos) actualmente usados por el usuario.
  3. soft: Restricción suave de bloques, es decir valor máximo hasta que se dejará rebasar por un tiempo hasta que pasado un tiempo se limite al valor duro. Si vale 0 este límite no se aplicará.
  4. hard: Restricción dura de bloques a la que limitaremos al usuario, pero que dejaremos rebasar temporalmente hasta el límite suave. Si vale 0 este límite no se aplicará.
  5. inodes: Número de inodos actualmente en uso.
  6. soft: Restricción suave de inodos, es decir valor máximo hasta que se dejará rebasar por un tiempo hasta que pasado un tiempo se limite al valor duro. Si vale 0 este límite no se aplicará.
  7. hard: Restricción dura de inodos a la que limitaremos al usuario, pero que dejaremos rebasar temporalmente hasta el límite suave. Si vale 0 este límite no se aplicará.

Por ejemplo para limitar a 1Gb (1Gb = 1Kb x 1Kb = 1024 x 1024 = 1048576) una cuenta estableceremos el límite hard de bloques a 1048576:

Disk quotas for user compartido (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/sda2 24 0 1048576 6 0 0

Una vez que salvemos el fichero de texto, este se aplicará automáticamente al usuario.

Para restringir por grupos es igual salvo que el comando a invocar será edquota -g groupname.

Para que un usuario restringido pueda consultar la cuota usada y la disponible puede usar el comando quota:

Cuotas de disco para user compartido (uid 1001):
Archivo del sistema bloques quota límite graciaarchivos quota límite gracia
/dev/sda2 24 0 1048576 6 0 0

Con esto finaliza el artículo, si tenéis dudas preguntad, que intentaré contestaros.

Deja un comentario