Este documento es una guia rapida de como instalar y configurar el sistema de cuotas en Linux.
El motivo que me ha llevado a realizar este documento ha sido la falta de información con la que yo me encontre en su momento cuando fui a configurar el sistema de cuotas en mi sistema y como agradecimiento a todos los que me ayudaron y como una aportación gratuita a toda la comunidad de Linux.
Si encuentra algún error, o simplemente desea hacer algun tipo de aportación a este documento, no dude en ponerse en contacto conmigo. Estare encantado de hacerlo.
Mi más sincero agradecimiento a Juan José Amor (mi maestro del Linux) por todas sus explicaciones y a todos los componentes de la lista de corrreo de SLUG (l-linux), sin cuya ayuda no hubiera podido conseguirlo.
Distribución y copia a libre de este documento total y/o parcialmente por cualquier medio ya sea de forma impresa o electrónica, con la unica condición de que se cite al autor del mismo incluyendo de forma completa este Copyright en todas las copias, tanto totales como parciales.
Cualquier modificiación de este documento debe ser aprobada por el autor del mismo por escrito antes de su distribución.
Garantias: Ninguna
Para cualquier consulta o duda acerca del contenido de este documento os podeis dirigir al autor del mismo: jfg@mad.servicom.es
Entra al sistema con el usuario root
Comprueba que el paquetes de quotas se encuentra instalado en el kernel. Esto puede comprobarse, mirando en el arranque de Linux con el comando:
# dmesg | grep quotas
VFS: Diskquotas version dquot_5.6.0 initialized
Si no sale este mensaje eso significa que el kernel no esta preparado para soportar el sistema de Diskquotas. Sera necesario primeramente recompilar el kernel de Linux. Para más detalles de como compilar el kernel puedes consultar el Kernel-HOWTO disponible en las páginas de
Una vez ya verficado que el kernel tiene instalado las Diskquotas, podemos continuar. Pon el sistema en monousuario, esto te evitara algunos problemas con los filesystems.
# shutdown now
Una vez que el sistema haya rearrancado de nuevo, edita el fichero /etc/fstab y en la particion o particiones que quieras quota pones la directiva usrquota o grpquota (la primera establece quotas a nivel de cada usuario y la segunda para cada grupo)
El siguiente ejemplo establece el sistema de cuotas para la particion /home (/dev/hda7):
/dev/hda7 /home ext2 defaults,usrquota 1 2
Ejecuta el comando:
/sbin/quotachek -av
Este comando recopila información de las particiones donde se hayas definido el sistema de cuotas. La salida de este comando debe de ser similar a la siguiente:
Scanning /dev/hda7 [/home] done
Checked 112 directories and 1052 files
Using quotafile /home/quota.user
Updating in-core user quotas
la ejecución de este comando además habra creado un fichero quota.user o quota.grp en la particion o particiones afectada(s), en mi caso genero un fichero en /home llamado quota.user
# ls -la /home/quota.user
-rw------- 1 root root 16224 Feb 04 14:47 quota.user
Ya tienes activa el sistema de cuotas!!! :-), la proxima vez que arranques tu sistema se activaran automaticamente en todas las particiones que hayas definido, ya no sera necesario volver a ejecutar manualmente este comando ya que el sistema lo hara de forma automatica al chequear y montar cada uno de los sistemas de ficheros desde el fichero /etc/rc.d/rc.sysinit. El siguiente paso pues, es .. definir la cuotas para cada usuario. Para ello hay dos metodos:
# edquota -u jfg
Nota: Se recomienda que para para ejecutar este comando tener defindo
como editor del sistema el vi, para ello solo hay definir la siguiente
variable del sistema.
:bash/sh => export EDITOR=vi
:tcsh/csh => setenv EDITOR vi
Esto arrancara un vi, con un texto inicial similar al siguiente:
Quotas for user jfg:
/dev/hda7: blocks in use: 18542, limits (soft = 0, hard = 0)
inodes in use: 1139, limits (soft = 0, hard = 0)
Como puedes comprobar por salida generada por el comando edquota, el
sistema de cuotas de Linux me permite limitar el número de bloques
y el número de i-nodos (ficheros y directorios) que un usuario
puede tener. Los valores a modificar son los limites que estan puestos
entre parentesis que ahora valen 0, ahi puedes poner lo que quieras
(son KBytes). Por ejemplo para limitar la quota de disco del usuario jfg
a 1 Mb pondria lo siguiente:
Quotas for user jfg:
/dev/hda7: blocks in use: 18542, limits (soft = 1024, hard = 1024)
inodes in use: 1139, limits (soft = 0, hard = 0)
El limite soft es un limite salvable, es decir, el sistema avisa al
usuario se esta pasando de la cuota asignada para ese usuario y el limite
hard es un limite insalvable, es decir, el sistema ya no le permite
escribir nada al usuario al haber obrepasado la cuota asignada. Por
ejemplo, si quiero imponer una cuota al usuario jfg una cuota de 3072
con un limite de soft de 2560 (o sea, 3 Mb de cuota y avisos a partir
de 2,5 Mb escribiria lo siguiente:
Quotas for user jfg:
/dev/hda7: blocks in use: 18542, limits (soft = 2560, hard = 3072)
inodes in use: 1139, limits (soft = 0, hard = 0)
Para el tema de los i-nodos lo mejor es poner un limite bastante grande o
si no el usuario no podria trabajar con muchos ficheros pequeños. La idea
es repartir el número de i-nodos totales en la partición, entre el número
de usuarios. Para conocer los i-nodos que hay, puedes ejecutar el comando:
# df -i /home
Filesystem Inodes IUsed IFree %IUsed Mounted on
/dev/hda7 51584 1180 50404 2% /home
# edquota -u -p prototipo usuario
Siendo prototipo el usuario generico y usuario el usuario al que le
quieres asignar la cuota.Con esto habras finalizado la configurado el sistema de cuotas en Linux. Resetea el sistema para volver de nuevo al sistema multiusuario.
# shutdown -r now
Para visualizar el estado de las cuotas de tu sistema puedes ejecutar el siguiente comando:
# 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
jfg -- 19043 2560 3072 1146 0 0
Si alguien tiene alguna duda o consulta que hacerme sobre el contenido de este documento, puede mandarme un mensaje a mi dirección de e-mail: jfg@mad.servicom.es. Espero vuestros comentarios
Saludos, Jose.