Cómo establecer cuotas del sistema de archivos en Debian 10

Introducción
Las cuotas se utilizan para limitar la cantidad de espacio en disco que un usuario o un grupo puede utilizar en un sistema de archivos. Sin estos límites, un usuario podría llenar el disco de la máquina y causar problemas a otros usuarios y servicios.
En este tutorial instalaremos herramientas de línea de comandos para crear e inspeccionar cuotas de disco y luego estableceremos una cuota para un usuario de ejemplo.
Prerrequisitos
Este tutorial asume que ha iniciado sesión en un servidor Debian 10, con un usuario no root y con sudo habilitado, como se describe en Configuración inicial del servidor con Debian 10.
Las técnicas de este tutorial generalmente deberían funcionar en distribuciones de Linux distintas de Debian, pero pueden requerir alguna adaptación.
Paso 1 – Instalación de las herramientas de cuotas
Para configurar y verificar las cuotas, primero debemos instalar las herramientas de línea de comandos de cuotas mediante apt
. Actualicemos nuestra lista de paquetes y luego instalemos el paquete:
sudo apt updatesudo apt install quota
Puede verificar que las herramientas estén instaladas ejecutando el quota
comando y solicitando información de su versión:
quota --version
OutputQuota utilities version 4.04.. . .
Está bien si el resultado muestra un número de versión ligeramente diferente.
A continuación actualizaremos mount
las opciones de nuestro sistema de archivos para habilitar cuotas en nuestro sistema de archivos raíz .
Paso 2: Actualización de las opciones de montaje del sistema de archivos
Para activar las cuotas en un sistema de archivos en particular, debemos montarlo con algunas opciones relacionadas con las cuotas especificadas. Para ello, actualizamos la entrada del sistema de archivos en el /etc/fstab
archivo de configuración. Abra ese archivo en su editor de texto favorito ahora:
sudo nano /etc/fstab
El contenido del archivo será similar al siguiente:
/etc/fstab
# /etc/fstab: static file system information.UUID=06b2aae3-b525-4a4c-9549-0fc6045bd08e/ext4errors=remount-ro01
Este fstab
archivo es de un servidor virtual. Una computadora de escritorio o portátil probablemente tendrá un aspecto ligeramente diferente fstab
, pero en la mayoría de los casos tendrá un /
sistema de archivos raíz que representa todo el espacio de su disco.
Actualice la línea que apunta al sistema de archivos raíz agregando opciones como las siguientes:
/etc/fstab
# /etc/fstab: static file system information.UUID=06b2aae3-b525-4a4c-9549-0fc6045bd08e/ext4errors=remount-ro,usrquota,grpquota01
Agregará las nuevas opciones al final de las opciones existentes, asegurándose de separarlas con una coma y sin espacios. El cambio anterior nos permitirá habilitar cuotas usrquota
basadas en usuarios ( ) y grupos ( grpquota
) en el sistema de archivos. Si solo necesita una u otra, puede omitir la opción no utilizada.
Vuelva a montar el sistema de archivos para que las nuevas opciones surtan efecto:
sudo mount -o remount /
Nota: Asegúrese de que no haya espacios entre las opciones que aparecen en el /etc/fstab
archivo. Si coloca un espacio después de la ,
coma, verá un error como el siguiente:
Outputmount: /etc/fstab: parse error at line 2 -- ignored
Si ve este mensaje después de ejecutar el mount
comando anterior, vuelva a abrir el fstab
archivo, corrija los errores y repita el mount
comando antes de continuar.
Podemos verificar que se usaron las nuevas opciones para montar el sistema de archivos observando el /proc/mounts
archivo. Aquí, usamos grep
para mostrar solo la entrada del sistema de archivos raíz en ese archivo:
cat /proc/mounts | grep ' / '
Output/dev/vda1 / ext4 rw,relatime,quota,usrquota,grpquota,errors=remount-ro,data=ordered 0 0
Tenga en cuenta las dos opciones que especificamos. Ahora que hemos instalado nuestras herramientas y actualizado las opciones del sistema de archivos, podemos activar el sistema de cuotas.
Paso 3 – Habilitación de cuotas
Antes de activar definitivamente el sistema de cuotas, debemos ejecutar manualmente el quotacheck
comando una vez:
sudo quotacheck -ugm /
Este comando crea los archivos /aquota.user
y /aquota.group
. Estos archivos contienen información sobre los límites y el uso del sistema de archivos, y deben existir antes de que activemos la supervisión de cuotas. Los quotacheck
parámetros que hemos utilizado son:
u
: especifica que se debe crear un archivo de cuota basado en el usuariog
: indica que se debe crear un archivo de cuota basado en gruposm
: deshabilita la posibilidad de volver a montar el sistema de archivos como de solo lectura mientras se realiza el recuento inicial de cuotas. Volver a montar el sistema de archivos como de solo lectura dará resultados más precisos en caso de que un usuario esté guardando archivos activamente durante el proceso, pero no es necesario durante esta configuración inicial.
Si no necesita habilitar cuotas basadas en usuarios o grupos, puede omitir la quotacheck
opción correspondiente.
Podemos verificar que se crearon los archivos apropiados enumerando el directorio raíz:
ls /
Outputaquota.group bin dev home initrd.img.old lib64 media opt root sbin sys usr vmlinuzaquota.user boot etc initrd.img lib lost+found mnt proc run srv tmp var vmlinuz.old
Si no incluyó las opciones u
o g
en el quotacheck
comando, no aparecerá el archivo correspondiente. Ahora estamos listos para activar el sistema de cuotas:
sudo quotaon -v /
Output/dev/vda1 [/]: group quotas turned on/dev/vda1 [/]: user quotas turned on
Nuestro servidor ahora está monitoreando y aplicando cuotas, pero aún no hemos establecido ninguna. A continuación, estableceremos una cuota de disco para un solo usuario.
Paso 4 – Configuración de cuotas para un usuario
Existen varias formas de establecer cuotas para usuarios o grupos. Aquí veremos cómo establecer cuotas con los comandos edquota
y setquota
.
Uso edquotapara establecer una cuota de usuario
Usamos el edquota
comando para editar la cuota s. Editemos la cuota del usuario sammy de nuestro ejemplo:
sudo edquota -u sammy
La -u
opción especifica que se trata de una user
cuota que vamos a editar. Si, en cambio, deseas editar la cuota de un grupo, utiliza la -g
opción correspondiente.
Esto abrirá un archivo en el editor de texto predeterminado, de forma similar a cómo crontab -e
se abre un archivo temporal para que lo edites. El archivo tendrá un aspecto similar al siguiente:
Disk quotas for user sammy (uid 1001): Filesystem blocks soft hard inodes soft hard /dev/vda1 24 0 0 7 0 0
Aquí se enumeran el nombre de usuario y uid
los sistemas de archivos que tienen habilitadas las cuotas, y el uso y los límites basados en bloques e inodos. Establecer una cuota basada en inodos limitaría la cantidad de archivos y directorios que un usuario puede crear, independientemente de la cantidad de espacio en disco que utilice. La mayoría de las personas querrán cuotas basadas en bloques, que limitan específicamente el uso del espacio en disco. Esto es lo que configuraremos.
Nota: El concepto de bloque no está bien especificado y puede cambiar dependiendo de muchos factores, incluida la herramienta de línea de comandos que los informa. En el contexto de la configuración de cuotas en Debian, es bastante seguro asumir que 1 bloque equivale a 1 kilobyte de espacio en disco.
En la lista anterior, nuestro usuario sammy está usando 24 bloques, o 24 KB de espacio en la /dev/vda1
unidad. Los límites soft
y hard
están deshabilitados con un 0
valor.
Cada tipo de cuota le permite establecer un límite flexible y un límite estricto. Cuando un usuario excede el límite flexible, excede la cuota, pero no se le impide inmediatamente consumir más espacio o inodos. En cambio, se le da un margen de maniobra: el usuario tiene, por defecto, siete días para recuperar el uso de su disco por debajo del límite flexible. Al final del período de gracia de siete días, si el usuario aún supera el límite flexible, se tratará como un límite estricto. Un límite estricto es menos indulgente: toda creación de nuevos bloques o inodos se detiene inmediatamente cuando se alcanza el límite estricto especificado. Esto se comporta como si el disco se hubiera quedado completamente sin espacio: las escrituras fallarán, los archivos temporales no se crearán y el usuario comenzará a ver advertencias y errores mientras realiza tareas comunes.
Actualicemos nuestro usuario sammy para que tenga una cuota de bloque con un límite flexible de 100 MB y un límite estricto de 110 MB:
Disk quotas for user sammy (uid 1001): Filesystem blocks soft hard inodes soft hard /dev/vda1 24 100M 110M 7 0 0
Guardamos y cerramos el archivo. Para comprobar la nueva cuota podemos utilizar el quota
comando:
sudo quota -vs sammy
OutputDisk quotas for user sammy (uid 1001): Filesystem space quota limit grace files quota limit grace /dev/vda1 24K 100M 110M 7 0 0
El comando muestra nuestro estado de cuota actual y muestra que nuestra cuota es 100M
mientras que nuestro límite es 110M
. Esto corresponde a los límites flexibles y estrictos respectivamente.
Nota: Si desea que sus usuarios puedan verificar sus propias cuotas sin tener sudo
acceso, deberá darles permiso para leer los archivos de cuotas que creamos en el Paso 4. Una forma de hacer esto sería crear un users
grupo, hacer que esos archivos sean legibles por el users
grupo y luego asegurarse de que todos sus usuarios también estén incluidos en el grupo.
Para obtener más información sobre los permisos de Linux, incluida la propiedad de usuarios y grupos, lea Introducción a los permisos de Linux
Uso setquotapara establecer una cuota de usuario
A diferencia de edquota
, setquota
actualizará la información de cuota de nuestro usuario en un solo comando, sin un paso de edición interactiva. Especificaremos el nombre de usuario y los límites flexibles y estrictos para las cuotas basadas en bloques e inodos y, finalmente, el sistema de archivos al que se aplicará la cuota:
sudo setquota -u sammy 200M 220M 0 0 /
El comando anterior duplicará los límites de cuota basados en bloques de sammy0 0
a 200 megabytes y 220 megabytes. Los límites flexibles y rígidos basados en inodos indican que no se deben establecer. Esto es necesario incluso si no estamos estableciendo ninguna cuota basada en inodos.
Una vez más, usemos el quota
comando para comprobar nuestro trabajo:
sudo quota -vs sammy
OutputDisk quotas for user sammy (uid 1001): Filesystem space quota limit grace files quota limit grace /dev/vda1 24K 200M 220M 7 0 0
Ahora que hemos establecido algunas cuotas, descubramos cómo generar un informe de cuotas.
Paso 5: Generación de informes de cuotas
Para generar un informe sobre el uso actual de la cuota para todos los usuarios en un sistema de archivos en particular, utilice el repquota
comando:
sudo repquota -s /
Output*** Report for user quotas on device /dev/vda1Block grace time: 7days; Inode grace time: 7days Space limits File limitsUser used soft hard grace used soft hard grace----------------------------------------------------------------------root -- 981M 0K 0K 35234 0 0nobody -- 7664K 0K 0K 3 0 0ntp -- 12K 0K 0K 3 0 0_apt -- 8K 0K 0K 2 0 0debian -- 16K 0K 0K 4 0 0sammy -- 24K 200M 220M 7 0 0
En este caso, estamos generando un informe para el sistema de archivos /
raíz . El -s
comando indica repquota
que se deben utilizar números legibles para humanos cuando sea posible. Hay algunos usuarios del sistema enumerados, que probablemente no tengan cuotas establecidas de manera predeterminada. Nuestro usuario sammy aparece en la parte inferior, con las cantidades utilizadas y los límites flexibles y estrictos.
Observe también el Block grace time: 7days
texto destacado y la grace
columna. Si nuestro usuario superaba el límite flexible, la grace
columna mostraría cuánto tiempo le quedaba para volver a estar por debajo del límite.
En el siguiente paso actualizaremos los períodos de gracia para nuestro sistema de cuotas.
Paso 6 – Configuración de un período de gracia para excedentes
Podemos configurar el período de tiempo en el que un usuario puede flotar por encima del límite flexible. setquota
Para ello, utilizamos el comando:
sudo setquota -t 864000 864000 /
El comando anterior establece los tiempos de gracia de bloqueo e inodo en 864000 segundos o 10 días. Esta configuración se aplica a todos los usuarios y ambos valores deben proporcionarse incluso si no utiliza ambos tipos de cuota (bloque vs. inodo).
Tenga en cuenta que los valores deben especificarse en segundos.
Ejecútelo repquota
nuevamente para verificar que los cambios surtieron efecto:
sudo repquota -s /
OutputBlock grace time: 10days; Inode grace time: 10days. . .
Los cambios deberían reflejarse inmediatamente en la repquota
salida.
Conclusión
En este tutorial instalamos las quota
herramientas de línea de comandos, configuramos una cuota basada en bloques para un usuario y generamos un informe sobre el uso de la cuota de nuestro sistema de archivos.
Apéndice: Mensajes de error comunes relacionados con las cuotas
Los siguientes son algunos errores comunes que puede ver al configurar y manipular las cuotas del sistema de archivos.
quotaon Outputquotaon: cannot find //aquota.group on /dev/vda1 [/]quotaon: cannot find //aquota.user on /dev/vda1 [/]
Este es un error que puede aparecer si intentó activar las cuotas (usando quotaon
) antes de ejecutar el quotacheck
comando inicial. El quotacheck
comando crea los archivos aquota
o quota
necesarios para activar el sistema de cuotas. Consulte el paso 3 para obtener más información.
quota Outputquota: Cannot open quotafile //aquota.user: Permission deniedquota: Cannot open quotafile //aquota.user: Permission deniedquota: Cannot open quotafile //quota.user: No such file or directory
Este es el error que verá si ejecuta quota
y su usuario actual no tiene permiso para leer los archivos de cuotas de su sistema de archivos. Usted (o su administrador del sistema) deberá ajustar los permisos de archivo de manera adecuada o utilizarlos sudo
al ejecutar comandos que requieran acceso al archivo de cuotas.
Para obtener más información sobre los permisos de Linux, incluida la propiedad de usuarios y grupos, lea Introducción a los permisos de Linux
Deja una respuesta