viernes, 8 de enero de 2010

Asignando cuotas de disco.

Asignando cuotas de disco.
Autor: Joel Barrios Dueñas
Correo electrónico: jbarrios arroba linuxparatodos punto net
Sitio de Red: http://www.linuxparatodos.net/

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2006 Linux Para Todos. Algunos Derechos Reservados 2007 Factor Evolución SA de CV. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales. c) Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Procedimientos.

  1. Debe iniciarse el sistema en nivel de corrida 1 (mono usuario), ya que se requiere no haya procesos activos utilizando contenido de la partición a la cual se le aplicará la cuota de disco.

  2. Obviamente, durante la instalación, debió asignarse una partición dedicada para, por mencionar un ejemplo, los directorios /var y /home.

  3. Con la finalidad de añadir el soporte para cuotas en las particiones anteriormente mencionadas, se debe añadir en el fichero /etc/fstab los parámetros usrquota y grpquota a las líneas que definen la configuración de las particiones /var y /home:

    LABEL=/var /var ext3 defaults,usrquota,grpquota 1 2
    LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2
  4. Debe remontar las particiones para que surtan efecto los cambios:

    mount -o remount /var
    mount -o remount /home
  5. Se deben crear los ficheros aquota.user, aquota.group, quota.user y quota.group, los cuales se utilizarán en adelante para almacenar la información y estado de las cuotas en cada partición.

    cd /var
    touch aquota.user aquota.group quota.user quota.group
    cd /home
    touch aquota.user aquota.group quota.user quota.group
  6. Ejecutar:

    quotacheck -avug

    La primera vez que se ejecuta el mandato anterior es normal marque advertencias refiriéndose a posibles ficheros truncados que en realidad no eran otra cosa sino ficheros de texto simple vacíos a los cuales se les acaba de convertir en formato binario. Si se ejecuta de nuevo quotacheck - avug, no deberá mostrar advertencia alguna.

  7. Para activar las cuotas de disco recién configuradas, solo bastará ejecutar:

    quotaon /var
    quotaon /home
  8. Vaya al nivel de corrida 3 a fin de aplicar cuota de disco a algunos usuarios.

    init 3

Edquota.

Es importante conocer que significa cada columna mostrada por edquota.

Blocks: Bloques. Corresponde a la cantidad de bloques de 1 Kb que está utilizando el usuario.

Inodes: Inodos. Corresponde al número de ficheros que está utilizando el usuario. Un inodo (también conocido como Index Node) es un apuntador hacia sectores específicos de disco duro en los cuales se encuentra la información de un fichero. Contiene además la información acerca de permisos de acceso así como los usuarios y grupos a los cuales pertenece el fichero.

Soft: Limite de gracia. Limite de bloques de 1 KB que el usuario puede utilizar y que puede rebasar hasta que sea excedido el periodo de gracia (de modo predeterminado son 7 días).

Hard: Limite absoluto. Limite que no puede ser rebasado por el usuario bajo circunstancia alguna.

Asignar cuotas de disco a cualquier usuario o grupo solo hará falta utilizar edquota citando el nombre del usuario al cual se le quiere aplicar:

edquota fulano

Lo anterior deberá devolver algo como lo siguiente a través de vi u otro editor de texto simple:

Disk quotas for user fulano (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hda7 0 0 0 0 0 0
/dev/hda5 24 0 0 10 0 0

Cuota absoluta.

Suponiendo que se quiere asignar una cuota de disco de 6 MB para el usuario «fulano» en en /dev/hda7 y /dev/hda5, se utilizaría lo siguiente:

Disk quotas for user fulano (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hda7 0 0 6144 0 0 0
/dev/hda5 24 0 6144 10 0 0

El usuario siempre podrá rebasar una cuota de gracia pero nunca una cuota absoluta.

Cuota de gracia.

El sistema tiene de modo predeterminado un periodo de gracia de 7 días que se puede modificar con el mandato edquota -t, donde se puede establecer un nuevo periodo de gracia por días, horas, minutos o segundos.

Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/hdb7 7days 7days
/dev/hdb5 7days 7days

La cuota de gracia establece los límites de bloques o inodos que un usuario tiene en una partición. Cuando el usuario excede el límite establecido por la cuota de gracia, el sistema advierte al usuario que se ha excedido la cuota del disco sin embargo permite al usuario continuar escribiendo hasta que trascurre el tiempo establecido por el periodo de gracia, tras el cual al usuario se le impide continuar escribiendo sobre la partición. Suponiendo que quiere asignar una cuota de gracia de 6 MB en /dev/hda7 y /dev/hda5, la cual podrá ser excedida hasta por 7 días, se utilizaría lo siguiente:

Disk quotas for user fulano (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hda7 0 6144 0 0 0 0
/dev/hda5 24 6144 0 10 0 0

Aplicando cuotas masivamente.

Si se quiere que todo aplique para los usuarios existentes, a partir de UID 510, por ejemplo, suponiendo que tiene al usuario "pepito" como molde (note por favor el acento grave en el mandato justo antes de awk, no es una comilla ni apostrofe):

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

Comprobaciones.

Utilice el mandato edquota con el usuario fulano.

edquota fulano

Asigne al usuario «fulano» una cuota de disco de 50 MB en todas las particiones con cuota de disco habilitada:

Disk quotas for user fulano (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hda7 0 0 51200 0 0 0
/dev/hda5 24 0 51200 10 0 0

Desde otra terminal acceda hacia el sistema como el usuario fulano y ejecute el mandato quota y observe con detenimiento la salida:

Disk quotas for user fulano (uid 501):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda7 0 0 51200 1 0 0
/dev/hda5 24 0 51200 10 0 0

Realice una copia del directorio /usr/lib como el subdirectorio ~/prueba-cuotas dentro de su directorio de inicio:

cp -r /usr/lib ~/prueba-cuotas

Notará que llegará un momento en el que el sistema indicará que ya no es posible continuar copiando contenido dentro de ~/prueba-cuotas debido a que se ha agotado el espacio en la partición.

Utilice de nuevo el mandato quota y observe con detenimiento la salida, en donde aparecerá un asterisco justo junto a la cantidad en la columna de bloques bloques, el cual indica que se ha excedido la cuota del disco:

Disk quotas for user fulano (uid 501):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda7 0 0 51200 1 0 0
/dev/hda5 51200* 0 51200 7439 0 0

Para poder volver a escribir sobre la partición, es necesario liberar espacio. Elimine por completo el directorio ~/prueba-cuotas y vuelva a utilizar el mandato quota:

rm -fr ~/prueba-cuotas
quota


//////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
explicacion2 ::::::
fuente: http://dagaren.blogspot.com/2006/01/administracin-de-usuarios-en-debian.html

Administración de usuarios en debian: asignando quotas de disco

En el servidor tengo corriendo el mldonkey. Para poner cosas a descargar yo, mi hermano y mi madre. Claro si todos ponemos cosas, y debido a que el disco es pequeñito, puede llegar a darse el caso de que el disco se llene y el servidor se bloquee (ya nos pasó alguna vez en el piso de Salamanca). Pensando en cómo evitarlo me dí cuenta de que tenía que haber algún método para 'restringir' el espacio en disco que cada usuario puede usar. Además, imagino que este aspecto debe ser básico a la hora de administrar una máquina con múltiples usuarios activos. De modo que investigué y consegui configurarlo. Los pasos a tener en cuenta son los siguientes:

  1. El kernel debe estar configurado para el soporte de cuotas. Las quotas se introdujeron en el kernel de linux a partir de la versión 1.3, de modo que cualquier distribución actual más o menos acutalizada tendrá un kernel con soporte. En caso de que no esté configurado con la opción tocará reconfigurarlo y compilarlo.
  2. Instalar el paquete 'quota'. En un sistema debian bastará con #aptitude install quota. Esto instalará los programas necesarios y configurará los archivos en /etc/init.d/ para que se apliquen las cuotas en el arranque del sistema.
  3. Modificar el fichero /etc/fstab. En él por cada sistema de archivos o partición que queramos limitar tendremos que especificar que requiere quotas de usuario o de grupos, según nuestras necesidades.
    Guardamos y salimos.
  4. Reiniciamos el sistema. Y si la configuración de arranque es correcta, en el punto de montaje de las particionas a las que hemos asignado con cuotas deberán aparecer los archivos [a]quota.user y [a]quota.group (dependiendo de si hemos configurado quotas a usuario o a grupos, la "a" al principio del nombre depende de la versión de quota). El propietario de estos ficheros debe ser root y sólo él debe de tener permisos de lectura y escritura.
  5. Ahora lo que queda es asignar las cuotas a los usuarios. Para eso contamos con el comando edquota. Antes de seguir hay que explicar que los límites en uso de disco que se pueden configurar son dos: el número de inodos (ficheros) que el usuario puede tener y el número de bloques que pueden ocupar sus ficheros (¡ojo! normalmente un bloque corresponderá con 1KB, pero no siempre tiene que ser así). Para ver y/o modificar la cuota de un usuario (llamado pruebas por ejemplo) ejecutaremos #edquota -u pruebas. Esto nos lanzará el editor de texto que tengamos como predeterminado y nos mostrará algo así:

quota

De modo que vemos que por cada sistema de fichero con quotas nos mostrará una fila con los valores para el usuario. La columna filesystem indicá la partición, el campo blocks indica el número de bloques que tiene ocupados en el momento, soft indica el límite blando (se puede pasar, pero se avisará y sólo se podrá mantener durante un tiempo) de bloques que se pueden ocupar, hard indica el límite 'duro' (que nunca se podrá superar) de bloques, inodes indica el número de ficheros que posee el usuario en el momento, y el segundo soft y hard indican los límites blando y duro para el número de ficheros del usuario. Un valor de 0 indica que no existe límite alguno, y un número superior establecerá el límite. Una vez modificado como queramos sólo queda guardar y ya está. Tendremos configurado las cuotas de disco para el usuario pruebas.

No hay comentarios: