Introducción

Las cuotas se utilizan para limitar la cantidad de espacio en disco que un usuario o grupo puede utilizar en un sistema de archivos. Sin tales 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, 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 habilitado para sudo, como se describe en Configuración inicial del servidor con Debian 10.

Las técnicas de este tutorial deberían funcionar generalmente en distribuciones de Linux distintas de Debian, pero pueden requerir alguna adaptación.

Para establecer y verificar cuotas, primero necesitamos instalar las herramientas de línea de comando de cuotas usando apt. Actualicemos nuestra lista de paquetes, luego instalemos el paquete:

sudo apt update
sudo apt install quota

Puede verificar que las herramientas estén instaladas ejecutando el quota comando y solicitando su información de versión:

quota --version

Output

Quota utilities version 4.04.
. . .

Está bien si su salida muestra un número de versión ligeramente diferente.

A continuación, actualizaremos el sistema de archivos mount opciones para habilitar cuotas en nuestro raíz sistema de archivos.

Paso 2: actualización de las opciones de montaje del sistema de archivos

Para activar cuotas en un sistema de archivos en particular, necesitamos montarlo con algunas opciones relacionadas con las cuotas especificadas. Hacemos esto actualizando 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   / ext4    errors=remount-ro   0   1

Esta fstab El 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ás un / o raíz sistema de archivos que representa todo su espacio en disco.

Actualice la línea que apunta al sistema de archivos raíz agregando opciones de la siguiente manera:

/ etc / fstab

# /etc/fstab: static file system information.
UUID=06b2aae3-b525-4a4c-9549-0fc6045bd08e   /   ext4    errors=remount-ro,usrquota,grpquota   0   1

Agregará las nuevas opciones al final de las opciones existentes, asegurándose de separarlas todas con una coma y sin espacios. El cambio anterior nos permitirá habilitar tanto al usuario- (usrquota) y en grupo (grpquota) cuotas en el sistema de archivos. Si solo necesita uno u otro, 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 enumeradas en su /etc/fstab expediente. Si pones un espacio después del , coma, verá un error como el siguiente:

Output

mount: /etc/fstab: parse error at line 2 -- ignored

Si ve este mensaje después de ejecutar la mount comando, vuelva a abrir el fstab archivo, corrija los errores y repita el mount comando antes de continuar.

 

Podemos verificar que las nuevas opciones se usaron para montar el sistema de archivos mirando el /proc/mounts expediente. 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 nuestras opciones de sistema de archivos, podemos activar el sistema de cuotas.

Paso 3: Habilitación de cuotas

Antes de activar finalmente 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 activar la supervisión de cuotas. los quotacheck los parámetros que hemos utilizado son:

  • u: especifica que se debe crear un archivo de cuotas basado en el usuario
  • g: indica que se debe crear un archivo de cuotas basado en grupos
  • m: deshabilita 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 las cuotas basadas en usuarios o grupos, puede omitir las quotacheck opción.

Podemos verificar que se crearon los archivos apropiados enumerando el directorio raíz:

ls /

Output

aquota.group  bin   dev  home        initrd.img.old  lib64       media  opt   root  sbin  sys  usr  vmlinuz
aquota.user   boot  etc  initrd.img  lib             lost+found  mnt    proc  run   srv   tmp  var  vmlinuz.old

Si no incluyó el u o g opciones en el quotacheck comando, faltará 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

Hay algunas formas en las que podemos establecer cuotas para usuarios o grupos. Aquí, repasaremos cómo establecer cuotas tanto con edquota y setquota comandos.

Utilizando edquota establecer una cuota de usuario

Usamos el edquota comando para edeso cuotas. Editemos nuestro ejemplo sammy cuota de usuario:

sudo edquota -u sammy

los -u La opción especifica que esta es una user cuota que editaremos. Si, en su lugar, desea editar la cuota de un grupo, utilice la -g opción en su lugar.

Esto abrirá un archivo en el editor de texto predeterminado, similar a cómo crontab -e abre un archivo temporal para que lo edite. El archivo se verá similar a esto:

Disk quotas for user sammy (uid 1001):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/vda1                        24          0          0          7        0        0

Esto enumera el nombre de usuario y uid, los sistemas de archivos que tienen cuotas habilitadas en ellos, y el bloquear– y inodo-Uso y límites basados ​​en. Establecer una cuota basada en inodo limitaría la cantidad de archivos y directorios que un usuario puede crear, independientemente de la cantidad de espacio en disco que use. La mayoría de la gente querrá cuotas basadas en bloques, que limitan específicamente el uso de espacio en disco. Esto es lo que configuraremos.

 

Nota: El concepto de bloquear está mal especificado y puede cambiar dependiendo de muchos factores, incluida la herramienta de línea de comando que los informa. En el contexto de establecer 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 utiliza 24 bloques o 24 KB de espacio en el /dev/vda1 manejar. los soft y hard los límites están desactivados con un 0 valor.

 

Cada tipo de cuota le permite establecer un límite suave y un límite estricto. Cuando un usuario excede el límite flexible, supera la cuota, pero no se le impide de inmediato consumir más espacio o inodos. En su lugar, se le da cierto margen de maniobra: el usuario tiene, de forma predeterminada, 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 la creación de nuevos bloques o inodos se detiene inmediatamente cuando alcanza el límite estricto especificado. Esto se comporta como si el disco estuviera completamente sin espacio: las escrituras fallarán, los archivos temporales no se podrán crear y el usuario comenzará a ver advertencias y errores mientras realiza tareas comunes.

Actualicemos nuestro sammy usuario para tener 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

Guarde y cierre el archivo. Para comprobar la nueva cuota podemos utilizar el quota mando:

sudo quota -vs sammy

Output

Disk 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 nuestro limite es 110M. Esto corresponde a los límites blando y duro respectivamente.

 

Nota: Si desea que sus usuarios puedan verificar sus propias cuotas sin tener sudo acceso, tendrá que darles permiso para leer los archivos de cuota que creamos en el Paso 4. Una forma de hacerlo sería crear un users grupo, haga que esos archivos sean legibles por el users grupo y luego asegúrese 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

 

Utilizando setquota establecer una cuota de usuario

diferente a edquota, setquota actualizará la información de la cuota de nuestro usuario con un solo comando, sin un paso de edición interactivo. Especificaremos el nombre de usuario y los límites suaves y estrictos para las cuotas basadas en bloques y en inodo, y finalmente el sistema de archivos para aplicar la cuota a:

sudo setquota -u sammy 200M 220M 0 0 /

El comando anterior se duplicará sammyLa cuota basada en bloques limita a 200 megabytes y 220 megabytes. los 0 0 para los límites rígidos y blandos basados ​​en inodos indica que permanecen sin establecer. Esto es necesario incluso si no estamos configurando cuotas basadas en inodo.

Una vez más, use el quota comando para comprobar nuestro trabajo:

sudo quota -vs sammy

Output

Disk 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, averigüemos 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 de un sistema de archivos en particular, utilice el repquota mando:

sudo repquota -s /

Output

*** Report for user quotas on device /dev/vda1
Block grace time: 7days; Inode grace time: 7days
                        Space limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --    981M      0K      0K          35234     0     0
nobody    --   7664K      0K      0K              3     0     0
ntp       --     12K      0K      0K              3     0     0
_apt      --      8K      0K      0K              2     0     0
debian    --     16K      0K      0K              4     0     0
sammy     --     24K    200M    220M              7     0     0

En este caso, estamos generando un informe para / raíz sistema de archivos. los -s el comando dice repquota utilizar números legibles por humanos cuando sea posible. Hay algunos usuarios del sistema en la lista, que probablemente no tengan cuotas establecidas por defecto. Nuestro usuario sammy se enumera en la parte inferior, con las cantidades utilizadas y los límites suaves y estrictos.

También tenga en cuenta el Block grace time: 7days rótulo, y el grace columna. Si nuestro usuario estaba por encima del límite flexible, el grace La columna mostraría cuánto tiempo les quedaba para volver por debajo del límite.

En el siguiente paso, actualizaremos los períodos de gracia de 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 suave. Usamos el setquota comando para hacerlo:

sudo setquota -t 864000 864000 /

El comando anterior establece los tiempos de gracia de bloque e inodo en 864000 segundos, o 10 días. Esta configuración se aplica a todos los usuarios y se deben proporcionar ambos valores incluso si no usa ambos tipos de cuota (bloque vs. inodo).

Tenga en cuenta que los valores debe ser especificado en segundos.

correr repquota nuevamente para verificar que los cambios surtieron efecto:

sudo repquota -s /

Output

Block grace time: 10days; Inode grace time: 10days
. . .

Los cambios deben reflejarse inmediatamente en el repquota salida.

Conclusión

En este tutorial instalamos el quota herramientas de línea de comandos, configure una cuota basada en bloques para un usuario y genere un informe sobre el uso de la cuota de nuestro sistema de archivos.

A continuación, se muestran algunos errores comunes que puede ver al configurar y manipular las cuotas del sistema de archivos.

quotaon Output

quotaon: cannot find //aquota.group on /dev/vda1 [/]
quotaon: cannot find //aquota.user on /dev/vda1 [/]

Este es un error que podría ver si intentó activar las cuotas (usando quotaon) antes de ejecutar la inicial quotacheck mando. los quotacheck comando crea el aquota o quota archivos necesarios para activar el sistema de cuotas. Consulte el Paso 3 para obtener más información.

quota Output

quota: Cannot open quotafile //aquota.user: Permission denied
quota: Cannot open quotafile //aquota.user: Permission denied
quota: 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 el administrador del sistema) deberá ajustar los permisos de archivo de forma adecuada o utilizar sudo al ejecutar comandos que requieren 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

 

Por itencore