Como habilitar cuotas en Linux

Albert M.C. Tam <bertie@scn.org>

8 de Agosto de 1997
Este documento describe como habilitar cuotas en sistemas de ficheros de un ordenador Linux, asignar cuotas a los usuarios y grupos, así como el uso de varios comandos relacionados con las cuotas.

1. Preámbulo

Este documento es <copylefted> de Albert M.C. Tam ( bertie@scn.org ). Se autoriza por la presente el uso, copia y distribución de este documento para usos no comerciales, siempre que figure el nombre del autor/editor y esta nota aparezca en todas las copias y/o soportes; este documento no debe ser modificado. Este documento se distribuye con la intención de ser útil, pero SIN NINGUNA GARANTÍA, ya sea implícita o explícita. A pesar de que se han hecho todos los esfuerzos posibles para asegurar la exactitud de la información contenida en este documento, el autor / editor / conservador no asume responsabilidad por los errores, o por los daños resultantes del uso de la información contenida en el documento.

Este documento describe como habilitar cuotas en sistemas de ficheros de un ordenador Linux, asignar cuotas a los usuarios y grupos, así como el uso de varios comandos relacionados con las cuotas. Esta dirigido a usuarios del núcleo 2.x (probado recientemente en RedHat 4.1 ejecutando el núcleo 2.0.27). Se recomienda a los usuarios de núcleos anteriores la actualización a una versión más reciente para disfrutar las ventajas de las cuotas.

*** Nota de traductor ***

Probado recientemente en RedHat 5.0 ejecutando el núcleo 2.0.31.

***

Si encontráis algún error o falta alguna información, podéis enviar cualquier sugerencia o comentario a bertie@scn.org . Os lo agradeceré.

2. Que son las cuotas?

Las cuotas permiten especificar limites en dos aspectos del almacenamiento en disco: El numero de inodos que puede poseer un usuario o un grupo; y el numero de bloques de disco que puede ocupar un usuario o un grupo.

La idea que se esconde detrás de las cuotas es que se obliga a los usuarios a mantenerse debajo de su limite de consumo de disco, quitándoles su habilidad de consumir espacio ilimitado de disco en un sistema.

Las cuotas se manejan en base al usuario y al sistema de ficheros. Si el usuario espera crear ficheros en mas de un sistema de ficheros, las cuotas deben activarse en cada sistema de ficheros por separado.

2.1 Estado actual de las cuotas en Linux.

Según he oído el soporte de cuotas fue integrado en el núcleo a partir de la versión 1.3.8xr. Ahora forma parte de la revisión 2.0 del núcleo de Linux. Si su sistema no soporta las cuotas, le recomiendo encarecidamente una actualización.

Actualmente la cuotas funcionan únicamente para los sistemas de ficheros de tipo ext2.

2.2 Requisitos para usar Cuotas en Linux.

3. Puesta en servicio de las cuotas en Linux

3.1 1ª Parte: La configuración

1. Configure de nuevo el núcleo. Configure de nuevo el núcleo y añada el soporte de cuotas eligiendo la opción si en:

Quota support (CONFIG_QUOTA) [n] y

2. Compile e instale el software de cuotas.

El código fuente del software de cuotas esta disponible en:

ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz

3. Modifique el programa de inicio de su sistema para chequear las cuotas y arrancarlas durante el encendido.

Veamos un ejemplo:

# Check quota and then turn quota on. if [ -x /usr/sbin/quotacheck ] then echo "Checking quotas. This may take some time." /usr/sbin/quotacheck -avug echo " Done." fi

if [ -x /usr/sbin/quotaon ] then echo "Turning on quota." /usr/sbin/quotaon -avug fi **** nota del traductor **** RedHat arranca las cuotas en dos tiempos el sistema de ficheros / se chequea en primer lugar en /etc/rc.d/rc.sysinit quotacheck -v / quotaon / el resto de los sistemas de ficheros se activan con quotacheck -v -R -a / quotaon -a ****

La regla de oro es arrancar las cuotas siempre después de que los sistemas de ficheros incluidos en /etc/fstab hallan sido montados, o las cuotas pueden no funcionar. Yo recomiendo arrancar las cuotas al final del programa de inicio del sistema, o si lo prefiere, justo después de la parte del programa de inicio del sistema donde se montan los sistemas de ficheros.

4. Modificación de /etc/fstab Las particiones que no tienen todavía habilitada la cuota tienen generalmente el siguiente aspecto:

/dev/hda1 / ext2 defaults 1 1 /dev/hda2 /usr ext2 defaults 1 1

Para habilitar cuotas al sistema de ficheros, añade "usrquota" al cuarto campo que contiene la palabra "defaults" (para mas detalles man fstab).

/dev/hda1 / ext2 defaults 1 1 /dev/hda2 /usr ext2 defaults,usrquota 1 1

Reemplaza "usrquota" por "grpquota", si necesitaras soporte de cuotas para grupos en un sistema de ficheros.

/dev/hda1 / ext2 defaults 1 1 /dev/hda2 /usr ext2 defaults,grpquota 1 1

Necesitas soporte para cuotas de usuario y grupo en un sistema de ficheros?

/dev/hda1 / ext2 defaults 1 1 /dev/hda2 /usr ext2 defaults,usrquota,grpquota 1 1

5. Crear el registro de cuotas "quota.user" y "quota.group".

Ambos ficheros de registro, quota.user y quota.group, deben pertenecer a root, con permisos de escritura y lectura para root y ningún permiso i para ningún otro.

Preséntese como root. Vaya a la base de la partición en la que desea habilitar cuotas, y cree quota.user y quota.group haciendo lo siguiente:

touch /partition/quota.user touch /partition/quota.group chmod 600 /partition/quota.user chmod 600 /partition/quota.group

6. Rearranque

Ahora rearranque el sistema para que los cambios que hemos hecho surjan efecto.

Tenga en cuenta que para las siguientes particiones en las que desee habilitar las cuotas en un futuro solo necesitara los pasos 4, 5 y 6.

3.2 2ª Parte: Asignando cuotas a los usuarios

Esta operación se realiza con el comando edquota (véase man edquota para mas detalles). Normalmente ejecuto quotacheck con los parámetros -avug para obtener el uso de los sistemas de ficheros lo mas actualizado posible antes de editar cuotas. Esto es solamente un habito personal, y en cualquier caso no es un paso requerido.

Asignando cuota para un usuario concreto.

He aquí un ejemplo. Tengo un usuario con el id de acceso bob en mi sistema. El comando "edquota -u bob" me lleva hasta vi ( o el editor especificado en mi variable de entorno $EDITOR). para editar las cuotas del usuario bob en cada partición que tenga habilitadas las cuotas.

Quotas for user bob: /dev/hda4: blocks in use: 5799, limits (soft = 8000, hard = 10000) inodes in use: 1454, limits (soft = 3000, hard = 4000)

"blocks in use" es el numero total de bloques (en kilobytes) consumidos por el usuario en la partición.

"inodes in use" es el numero total de ficheros que tiene el usuario en la partición.

Asignando cuota para un grupo concreto.

Ahora tengo un grupo llamado games en mi sistema. "edquota -g games" me lleva de nuevo al editor vi para editar las cuotas del grupo games:

Quotas for group games: /dev/hda4: blocks in use: 5799, limits (soft = 8000, hard = 10000) inodes in use: 1454, limits (soft = 3000, hard = 4000)

Asignando la misma cuota a unos cuantos usuarios.

Para rápidamente fijar cuotas a, digamos 100 usuarios, en mi sistema con los mismos valores que mi usuario bob, debería editar primero la información de cuotas de bob a mano, y después ejecutar:

edquota -p bob `awk -F: '$3 >499 {print $1}' /etc/passwd`

asumiendo que estés usando csh, y que asignes el UID de tus usuarios a partir de 500.

Además en edquota, Hay otros 3 términos con los que deberemos familiarizarnos: Soft Limit, Hard Limit, y Grace Period.

Soft Limit 'soft limit' indica la máxima cantidad de uso de disco que un usuario con cuota tiene en una partición. Cuando se combina con el periodo de gracia, actúa como una línea limite, enviando avisos al usuario con cuota acerca de su próxima violación de limite de cuota al ser sobrepasada.

Hard Limit

El 'hard limit' solo funciona cuando se activa un periodo de gracia. Especifica un limite absoluto en el uso del disco, no pudiendo un usuario con cuota ir mas allá de su limite hardware.

Grace Period

Ejecutado con el comando "edquota -t", el periodo de gracia es el tiempo limite antes de hacer cumplir el limite software a un usuario con cuota. Se pueden usar segundos, minutos, horas, días, semanas, y meses como unidades de tiempo. Esto es lo que mostrara el comando "edquota -t":

Time units may be: days, hours, minutes, or seconds Grace period before enforcing soft limits for users: /dev/hda2: block grace period: 0 days, file grace period: 0 days

Cambia el apartado de 0 días por cualquier espacio de tiempo que consideres razonable. Yo personalmente he escogido 7 días (o una semana).

4. Varios comandos sobre cuotas

4.1 Quotacheck

Quotacheck se usa para explorar el uso de disco en un sistema de ficheros, y actualizar el fichero de registro de cuotas "quota.user" al estado mas reciente. Recomiendo ejecutar quotacheck periódicamente al arrancar el sistema, o vía cronjob cada cierto tiempo (pongamos 1 semana?).

4.2 Repquota

Repquota produce un resumen de la información de cuota de un sistema de ficheros. Veamos un ejemplo del resultado de repquota:

# repquota -a Block limits File limits User used soft hard grace used soft hard grace root -- 175419 0 0 14679 0 0 bin -- 18000 0 0 735 0 0 uucp -- 729 0 0 23 0 0 man -- 57 0 0 10 0 0 user1 -- 13046 15360 19200 806 1500 2250 user2 -- 2838 5120 6400 377 1000 1500

4.3 Quotaon y Quotaoff

Quotaon se usa para activar la administración de cuotas; quotaoff para desactivarla. Ambos ficheros son similares actualmente. Se ejecutan durante el arranque y la parada del sistema.

5. Acerca de la traduccion

Si tienes comentarios sobre la traducción, no dudes en hacérmelos llegar.

Traductor:

Manuel de Vega Barreiro , barreiro@arrakis.es

http://www.croftj.net/~barreiro

v1.1-Enero 1998 (01-1998).