viernes, 18 de marzo de 2011

Determinar cuotas en Linux

Para activar las cuotas en el sistema ubuntu 10.04.

Supongamos este escenario:
"Mediante un mecanismo de cuotas, establecer límites en cuanto a la cantidad máxima de espacio asignado y la cantidad máxima de archivos a cada usuario. Concretamente quisieramos establecer un máximo de 200MB de espacio y un máximo de 1000 archivos."

Para solucionar esto debemos habilitar el manejo de cuotas en nuestro sistema Linux-


Debemos instalar los programas de gestión de cuotas. Estos son:
quotacheck y quotaon.

Ambos se encuentran el los repositorios de debian/ubuntu. Por lo que se puede instalar con aptitude. El paquete que contiene estos comandos es quota .

$ sudo aptitude install quota

Dos pasos

1.- Configuración del sistema para el uso de cuotas.

2.- Modificar el archivo /etc/fstab
(este paso debe repetirse para cada partición del disco que se quiera gestionar con cuotas.)

Debemos añadir una línea al final de los scripts de configuración. (/etc/rc.local)

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
#Checar cuotas
if [ -x /usr/quotacheck ]
then
echo "Verificando cuotas, esto puede llevar tiempo, vato!"
#Estos argumentos son por esto:
#-a, --all Check all mounted non-NFS filesystems in /etc/mtab
# -v, --verbose quotacheck reports its operation as it progresses. Normally it operates silently. If the option is specified twice, also the current directory is printed (note that printing can slow down the scan measurably).
# -u, --user Only user quotas listed in /etc/mtab or on the filesystems specified are to be checked. This is the default action.
#-g--group Only group quotas listed in /etc/mtab or on the filesystems specified are to be checked.
/usr/quotacheck -avug
echo "completado"
fi

if [ -x /usr/quotaon ]
then
echo "Activando cuotas, carnal!"
/usr/sbin/quotaon -avug
fi
exit 0

Podemos asignar diferentes cuotas para usuarios y grupos.
Supongamos que en el sistema esta un grupo de usuarios de GRASS y queremos asignarle aeste grupo una cuota de disco duro de 500GB. Es bien sabido que los mapas ocupan mucha memoria por lo que hay que restringir un mal uso del disco.
En este ejemplo chafa, el grupo de estos usuarios se puede llamar SIG.

Para cada partición, sobre la que se desee cuota, se necesitarán configurar 3 cosas:
  1. En el archivo /etc/fstab deberemos agregar la opción usrquota
  2. En el archivo /etc/fstab deberemos agregar la opción grpquota
  3. Debemos crear una base de datos de las copias.
Opción USRQUOTA
Para cada partición se le debe agregar esta opción en el archivo /etc/fstab
En nuestro sistema quedará de la siguiente forma
Más información de fstab en:
https://help.ubuntu.com/community/Fstab

#definir opción de cuotas para la partición 9
#
#/dev/sda9 / ext4 defaults,usrquota,grpquota 0 1

UUID=cdb835e7-460d-49f7-8dad-7956aeef3799 / ext4 errors=remount-ro,usrquota,grpquota 0 1


Aquí estamos especificando que la partición 9 del dispositivo sda, montado en la raíz del sistema con tipo de archivos ext4 tenga las opciones: usrquota, grpquota

Base de datos de cuotas
De
bemos crear un archivo para almacenar la información de cuotas de usuario y grupos. Estos archivos están vacios, por defecto. Se encuentran en el directorio. Debemos crear con el comando touch los siguientes archivos en la raiz de la partición.

$sudo touch quota.user
$sudo touch quota.group

Configuración de los parámetros de cuotas

El comando edquota nos da la posibilidad de crear, modificar o eliminar cuotas de usuarios y grupos.

Primero debemos definir los siguiente.

In addition to edquota, there are 3 terms which you should familiarize yourself with: Soft Limit, Hard Limit, and Grace Period.

5.4 Soft Limit

_Soft limit_ indicates the maximum amount of disk usage a quota user has on a partition. When combined with grace period, it acts as the border line, which a quota user is issued warnings about his impending quota violation when passed.

5.5 Hard Limit

Hard limit works only when grace period is set. It specifies the absolute limit on the disk usage, which a quota user can't go beyond his hard limit.

5.6 Grace Period

Executed with the command "edquota -t", grace period is a time limit before the soft limit is enforced for a file system with quota enabled. Time units of sec(onds), min(utes), hour(s), day(s), week(s), and month(s) can be used. This is what you'll see with the command "edquota -t":

Más info en:
http://www.faqs.org/docs/Linux-mini/Quota.html

edquota ejecuta un editor de texto para modificar el archivo de cuotas que hemos creado. Por default el editor que ejecuta es el que está definido en la variable de entorno $EDITOR

edquote tiene varios paŕametros. (ver: http://publib.boulder.ibm.com/infocenter/aix/v6r1/index.jsp?topic=/com.ibm.aix.cmds/doc/aixcmds2/edquota.htm)

Supongamos que queremos editar el usuario juan.
PARA PODER HACER ESTO SERÁ
NECESARIO REINICIAR EL EQUIPO o volver a montar la partición.

$ sudo edquota -u juan

En terminal veremos algo así.
Disk quotas for user juan (uid 1002):
Filesystem blocks soft hard inodes soft $
/dev/sda9 24 0 0 7 0 $

los ceros indican que no hay cuiotas para la cuenta de juan.
Observemos que hay cuota para los i-nodos. Aquí podemos poner la cuota para los archivos.
Para cumplir con nuestro cometido bastará con modificar este script para que quede así.


para saber cuánto vale un bloque debemos ejecutar el comando
$sudo tune2fs -l /dev/sda9

Disk quotas for user juan (uid 1002):
Filesystem blocks soft hard inodes soft $
/dev/sda9 24 45 50 1000 950 $

Para copiar a otros usuarios podemos copiar la configuración con la opción -p


$ sudo edquota -p juan grillo


listo, lo podemos hacer pa todos los usuarios con:


Checar los siguientes comandos para la gestión de cuotas

quotacheck
quotaon
repquota


No hay comentarios:

Publicar un comentario