Introducción
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
Amor (mi maestro del Linux) por todas sus explicaciones y a todos los componentes de la
lista de corrreo de (l-linux),
sin cuya ayuda no hubiera podido conseguirlo.
Copyright
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.
Disclaimer
Garantias: Ninguna
Para cualquier consulta o duda acerca del contenido de este documento os podeis dirigir
al autor del mismo:
Requerimientos
- Linux kernel versión 2.0.x o superior compilado con el soporte de quotas. Para mas detalles de
como compilar el kernel de Linux sugiero que se lea primero el documento KERNEL-Howto, traducido al castellano y
disponible en las paginas del proyecto (Linux en Castellano) o en
cualquiera de sus mirrors o su version inglesa en el
(Linux Documentation Proyect)
- Software: Quota-1.55 o superior
Proceso de instalación y configuración
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:
- La primera es editar la quota de cada usuario. Por ejemplo para editar
la cuota del usuario jfg, ejecutas desde el usuario root el comando:
# 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
- La segunda 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 de tu sistema con el siguiente comando del sistema operativo:
# 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
Para concluir
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.