En este momento estás viendo Establecer cuotas de disco a usuarios en Debian

Establecer cuotas de disco a usuarios en Debian

Establecer cuotas de disco a usuarios en Debian

Vamos a ver como establecer cuotas de disco a usuarios, y grupos de usuarios, en Debian 11. Desde grandes empresas a incluso aulas, pueden requerir de este sistema, si el almacenamiento es compartido.

Sumario

  • Que es un sistema de cuotas
  • Implementación
  • Activación del sistema de cuotas
  • Creación de cuotas
  • Configuración de cuotas para un usuario
    • edquota
  • Comprobar las cuotas de todos los usuarios
  • Activación y desactivación de cuotas

Qué es un sistema de cuotas

Cuando múltiples usuarios comparten un sistema de almacenamiento, con el tiempo, se van realizando instalaciones y guardando todo tipo de datos, lo que hace necesario implementar un sistema de cuotas de uso de disco, para usuarios o grupos, y así evitar que algunos de ellos monopolicen este espacio, llenando el disco y causando problemas a otros usuarios.

El almacenamiento en disco se puede limitar mediante la implementación de cuotas de disco. Estas cuotas las podemos configurar para usuarios individuales o para grupos de usuarios. Las podemos establecer indicando el tamaño (número de bloques) o determinando el número de ficheros que pueden ser creados (inodos). Como los inodos contienen la información de los ficheros «metadatos», lo podemos utilizar para establecer el número de ficheros que cada usuario puede crear.

Implementación

Para implementar este sistema nos tenemos que asegurar de que el núcleo del sistema operativo es compatible (compilado con la opción CONFIG_QUOTA). En el caso de Debian lo tenemos disponible.

sudo dmesg | grep quotas
Comprobamos la compatibilidad del kernel
Comprobamos la compatibilidad del kernel

Encontramos el «software» de administración de cuotas en el paquete Debian «quota». Para instalarlo ejecuta

sudo apt update

sudo apt install quota
Instalación del paquete deb quota
Instalación del paquete deb quota

Y comprobamos la versión

quota --version
Versión instalada
Versión instalada

El siguiente paso es configurar el sistema de ficheros que queramos para establecer cuotas.

Activación del sistema de cuotas

Para activar el sistema de cuotas editamos el fichero de configuración «/etc/fstab» (file systems table), donde indicamos las opciones de todos los sistemas de ficheros que ha de montar en el arranque.

sudo nano /etc/fstab

Lo más normal, y lo recomendado, es aplicar las cuotas a «/home», aunque también podemos optar por crear un nuevo directorio como, por ejemplo, «/datos», o aplicarlo a cualquier otro sistema de ficheros, incluido el directorio raiz «/».

En este caso lo aplicaré a «/home». Busco en «fstab», la linea que contiene el punto de montaje que quiero y añado los argumentos que indican al sistema que el volumen podrá tener cuotas, tanto para usuarios, como para grupos: «usrquota» y «grpquota».

# /home was on /dev/sda6 during installation
UUID=ae926a12-d731-4d33-b5a2-e156bbee3725 /home           ext4    defaults        0       2

al que añadiremos los argumentos y quedará como sigue

# /home was on /dev/sda6 during installation
UUID=ae926a12-d731-4d33-b5a2-e156bbee3725 /home           ext4    defaults,usrquota,grpquota        0       2

La configuración anterior nos permitirá habilitar cuotas, tanto a un usuario «usrquota» como a un grupo de usuarios «grpquota» en el sistema de ficheros elegido. Podemos utilizar uno, otro o ambos a la vez. Fíjate que entre las opciones no hay espacios «defaults,usrquota,grpquota», si los pones no funcionará.

Configuración de cuotas en fstab
Configuración de cuotas en fstab

Solo nos falta montar el sistema de ficheros modificado

sudo mount -o remount /home

Verificamos las opciones con que se ha montado el volumen consultando «/proc/mounts»

cat /proc/mounts | grep ' /home '
Montaje del sistema de ficheros
Verificamos las opciones con se ha montado el sistema de ficheros

Al reiniciar el equipo se actualizarán las cuotas cuando no exista actividad en el disco, condición necesaria para poder contabilizar apropiadamente el espacio en disco ya utilizado.

Creación de cuotas

Ahora que ya tenemos el sistema de ficheros «/home» configurado para soportar cuotas de disco, utilizamos la herramienta «quotacheck» diseñada para crear, verificar o modificar el control de las cuotas.

sudo quotacheck -ugm /home

Las opciones disponibles para el comando son:

  • -u – user, verifica soporte de cuotas para usuarios.
  • -g – group, verifica soporte de cuotas para grupos.
  • -m – no-remount, evita que el sistema se vuelva a montar como de solo lectura. Se utiliza si el sistema de ficheros está montado y en uso.
  • -v – verbose, muestra el progreso por la salida estandar.
  • -a – all, Verifica todos los sistemas de ficheros montados localmente con cuotas activadas.

Este comando crea los ficheros «/aquota.user» y «/aquota.group», que contienen información sobre los límites y el uso del sistema de ficheros. Deben existir antes de activar la supervisión de cuotas.

ls /home
Ficheros "/aquota.user" y "/aquota.group" creados
Ficheros «/aquota.user» y «/aquota.group» creados

Activamos el sistema de cuotas,

sudo quotaon -v /home
# o
sudo quotaon -a
Activación del sistema de cuotas
Activación del sistema de cuotas

Configuración de cuotas para un usuario

El sistema de cuotas nos permite establecer los limites de dos formas:

  • Estableciendo dos límites, llamados «blando» y «duro», que hacen referencia al número de bloques consumidos. Si el sistema de ficheros se creó con un tamaño de bloque de 1 kibibyte, los 1024 bytes disponibles de cada bloque, solo se pueden asignar a un fichero.
  • Estableciendo dos límites «blando» y «duro», que hacen referencia al número de inodos utilizados. Cada fichero ocupa al menos un inodo para almacenar información sobre el mismo (permisos, propietario, último acceso, etc.), por tanto, es un límite en el número de ficheros de usuario.

Y para establecer estas cuotas tenemos el comando que vemos a continuación, «edquota».

edquota

Con este comando editamos las cuotas. Por ejemplo

sudo edquota -u javier
# o 
sudo quota javier

Con la opción «-u», indicamos que se edite una cuota de usuario, si usáramos «-g» sería una cuota de grupo. Obtenemos la siguiente salida

Disk quotas for user javier (uid 1000):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda6                     21556          0          0        320        0        0
Edición de las cuotas establecidas
Edición de las cuotas establecidas

Aquí veremos el nombre de usuario y uid, los sistemas de ficheros que tienen cuotas habilitadas, y los bloques e inodos usados por el usuario. Si establecemos la cuota por inodos, limitamos el número de ficheros que puede crear un usuario independientemente del espacio de disco usado. Lo más habitual será establecer las cuotas por bloques. En Debian, normalmente, un bloque equivale a 1 kilobyte. Vemos como hacerlo.

En la captura anterior vemos que el usuario «javier» está usando 21556 bloques o 21556 KB en el sistema de ficheros «/dev/sda6» y en este caso los limites «blando» y «duro» están desactivados (valor 0).

Ahora podemos modificar los límites establecidos. Cuando un usuario excede el límite blando superando la cuota, no se le impide el consumo de más espacio (bloques o inodos), se le otorga, de forma predeterminada, siete días para limpiar y recuperar el uso por debajo del límite. Si no lo hace, se tratará como un límite duro al terminar dicho plazo. Se puede modificar el periodo de gracia con el comando «edquota -t».

Con el límite duro, toda posibilidad de creación de nuevos bloques o inodos se detiene inmediatamente. El resultado es el mismo que cuando tenemos un disco completamente lleno, las escrituras fallarán, los ficheros temporales no se podrán crear y el usuario comenzará a ver advertencias y errores mientras realiza tareas comunes.

Vamos a darle otros valores para tener una cuota de bloque con un límite blando de 100 MB y un límite duro de 110 MB.

Disk quotas for user javier (uid 1000):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda6                     21556       100        110        320        0        0
Nuevas cuotas aplicadas
Nuevas cuotas aplicadas

Guardamos y cerramos el fichero. Y comprobamos la nueva cuota ejecutando

sudo quota -vs javier
Comprobamos las modificaciones
Comprobamos las modificaciones

Si queremos permitir que los usuarios puedan ver el estado de sus cuotas sin privilegios de «sudo», tendremos que dar permisos a los ficheros o crear un grupo y darle los permisos. Luego tendremos que incluir a los usuarios que queramos en el grupo creado. Aquí puedes consultar más información sobre permisos.

Comprobar las cuotas de todos los usuarios

Para el administrador del sistema es muy sencillo comprobar el estado de las cuotas de todos los usuarios. Para ello disponemos del comando «repquota».

sudo repquota -s /home
o
sudo repquota -a

En mi caso, obtenemos la salida

javier@javier-weblinus:~$ sudo repquota -s /home
*** Report for user quotas on device /dev/sda6
Block grace time: 7days; Inode grace time: 7days
                        Space limits    quotaon -aug            File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --     20K      0K      0K              2     0     0       
javier    +-  21556K    100K    110K  6days     320     0     0       

javier@javier-weblinus:~$ 
Comprobación del estado de las cuotas
Comprobación del estado de las cuotas

Con la opción «-s», le pedimos que la salida sea en datos legibles para los humanos. Pueden aparecer usuarios del sistema que, lógicamente, no tendrán cuotas establecidas.

En la captura anterior vemos el tiempo de gracia establecido (7 días), y en la columna «grace», mostraría cuánto tiempo les queda para volver por debajo del límite, a los usuarios que hayan rebasado el límite blando.

La marca «–» que vemos después del nombre del usuario es una forma rápida de indicar si se han superado los límites. Si el usuario ha superado el límite blando aparece el símbolo «+» en lugar de «-». El primer «-» representa el limite de bloque, y el segundo, el límite de inodo. La marca «–» que vemos después del nombre del usuario es una forma rápida de indicar si se han superado los límites.

Si queremos definir una cuota automáticamente para usuarios nuevos, tenemos que configurar un usuario patrón con «edquota», e indicar el nombre de usuario en la variable «QUOTAUSER» en el fichero «/etc/adduser.conf». Cada vez que creemos un usuario con «adduser», se le aplicará esa configuración.

Activación y desactivación de cuotas

Para desactivar las cuotas en el sistema de ficheros se utiliza el comando,

sudo quotaoff -aug

donde «-u» permite desactivar las cuotas de usuario, y «-g» permite desactivar las cuotas de grupo. Si no se indica ninguna opción, por defecto, se desactivarán las cuotas de usuario.

Para activar nuevamente las cuotas, se utiliza el comando «quotaon» con las mismas opciones.

sudo quotaon -aug

Si tienes algún comentario que hacer sobre este artículo, al pie del post tienes un formulario para hacerlo.

Si quieres contactar conmigo por cualquier otro asunto relacionado con el sitio, en la página de contacto, tienes un formulario más adecuado.

Y para suscribirte y recibir las novedades publicadas, tienes un enlace en pie de la página o desde aquí mismo.

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.