Configuración del sistema de cuotas en Linux <author>José F. Gómez Díez <date>8-Feb-1998 <abstract> <bf>Autor: José Francisco Gómez Díez</bf> <bf><htmlurl url="http://www.geocities.com/Eureka/6263/" name="http://www.geocities.com/Eureka/6263/"></bf> <bf>Internet E-Mail:<htmlurl url="mailto:jfg@mad.servicom.es" name="jfg@mad.servicom.es"></bf> <bf>FidoNet NetMail: 2:341/12.32@fidonet.org</bf> <bf>Versión 1.0 Febrero 1998</bf>  </abstract> <toc> <!-- Autor: Jose F. Gomez Diez. Fecha: 18-Feb-1998 -- > <!--META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"--> <!--META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; I; Linux 2.0.33 i586) [Netscape]"--> <!--META NAME="KEYWORDS" CONTENT="Linux,Unix,Cuotas"--> <!--META NAME="URL" CONTENT="http://www.geocities.com/Eureka/6263"--> <!--META NAME="ABSTRACT" CONTENT="Documento que explica como realizar la configuracion del sistema de cuotas en Linux"--> <sect>Introducción <p> Este documento es una guia rapida de como instalar y configurar el sistema de cuotas en Linux. <p>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. <p>Mi más sincero agradecimiento a <htmlurl url="mailto:jjamor@ls.fi.upm.es" name="Juan José "> Amor (mi maestro del Linux) por todas sus explicaciones y a todos los componentes de la lista de corrreo de <htmlurl url="mailto:l-linux@calvo.teleco.ulpgc.es" name="SLUG"> (l-linux), sin cuya ayuda no hubiera podido conseguirlo. <sect>Copyright <p> 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. <p>Cualquier modificiación de este documento debe ser aprobada por el autor del mismo por escrito antes de su distribución. <sect>Disclaimer <p> <p>Garantias: Ninguna Para cualquier consulta o duda acerca del contenido de este documento os podeis dirigir al autor del mismo: <htmlurl url="mailto:jfg@mad.servicom.es" name="jfg@mad.servicom.es"> <sect>Requerimientos <p> <itemize> <item> <bf>Linux kernel versión 2.0.x o superior</bf> 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 <htmlurl url="http://www.infor.es/LuCAS" name="LuCAS"> (Linux en Castellano) o en cualquiera de sus mirrors o su version inglesa en el <htmlurl url="http://sunsite.unc.edu/mdw/welcome.html" name=" LDP"> (Linux Documentation Proyect) <item><bf>Software: Quota-1.55 o superior</bf> </itemize> <sect>Proceso de instalación y configuración <p> 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: <tscreen><verb> # dmesg | grep quotas VFS: Diskquotas version dquot_5.6.0 initialized </verb></tscreen> 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. <tscreen><verb> # shutdown now </verb></tscreen> 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): <tscreen><verb> /dev/hda7 /home ext2 defaults,usrquota 1 2 </verb></tscreen> Ejecuta el comando: <tscreen><verb> /sbin/quotachek -av </verb></tscreen> 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: <tscreen><verb> Scanning /dev/hda7 [/home] done Checked 112 directories and 1052 files Using quotafile /home/quota.user Updating in-core user quotas </verb></tscreen> 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 <tscreen><verb> # ls -la /home/quota.user -rw------- 1 root root 16224 Feb 04 14:47 quota.user </verb></tscreen> 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: <enum> <item>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: <tscreen><verb> # edquota -u jfg </verb></tscreen> 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. <tscreen><verb> :bash/sh => export EDITOR=vi :tcsh/csh => setenv EDITOR vi </verb></tscreen> Esto arrancara un vi, con un texto inicial similar al siguiente: <tscreen><verb> Quotas for user jfg: /dev/hda7: blocks in use: 18542, limits (soft = 0, hard = 0) inodes in use: 1139, limits (soft = 0, hard = 0) </verb></tscreen> 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: <tscreen><verb> Quotas for user jfg: /dev/hda7: blocks in use: 18542, limits (soft = 1024, hard = 1024) inodes in use: 1139, limits (soft = 0, hard = 0) </verb></tscreen> 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: <tscreen><verb> Quotas for user jfg: /dev/hda7: blocks in use: 18542, limits (soft = 2560, hard = 3072) inodes in use: 1139, limits (soft = 0, hard = 0) </verb></tscreen> 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: <tscreen><verb> # df -i /home Filesystem Inodes IUsed IFree %IUsed Mounted on /dev/hda7 51584 1180 50404 2% /home </verb></tscreen> <item>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: <tscreen><verb> # edquota -u -p prototipo usuario </verb></tscreen> Siendo prototipo el usuario generico y usuario el usuario al que le quieres asignar la cuota. </enum> Con esto habras finalizado la configurado el sistema de cuotas en Linux. Resetea el sistema para volver de nuevo al sistema multiusuario. <tscreen><verb> # shutdown -r now </verb></tscreen> Para visualizar el estado de las cuotas de tu sistema puedes ejecutar el siguiente comando: <tscreen><verb> # 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 </verb></tscreen> <sect>Para concluir <p> <p>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: <htmlurl url="mailto:jfg@mad.servicom.es" name=""> jfg@mad.servicom.es. Espero vuestros comentarios Saludos, Jose. </article>