O sistema de quotas é usado para limitar o espaço em disco
disponível a usuários/grupo. O uso de partições independentes para o diretório
/home
e outros montados separadamente não é muito eficaz
porque muitos usuários serão prejudicados se a partição for totalmente ocupada
e alguns possuem requerimentos de uso maior do que outros.
O suporte a Quotas deve estar compilado no kernel (seção FileSystems) e o sistema de arquivos deverá ser do tipo ext2 ou XFS para funcionar.
Abaixo o passo a passo para a instalação de quotas em seu sistema:
-
Recompile seu kernel com suporte a quota. Habilite a opção "Quota support" na seção "FileSystems" na configuração de recursos do seu kernel.
-
Instale o pacote no sistema (
apt-get install quota
). -
Habilite a quota para os sistemas de arquivos que deseja restringir no arquivo
/etc/fstab
:/dev/hda1 /boot ext2 defaults 1 1 /dev/hda3 / ext2 defaults,usrquota 1 2 /dev/hda4 /usr ext2 defaults,grpquota 1 3 /dev/hda5 /pub ext2 defaults,usrquota,grpquota 1 4
O sistema de arquivos
/dev/hda1
não terá suporte a quota,/dev/hda3
terá suporte a quotas de usuários (usrquota),/dev/hda4
terá suporte a quotas de grupos (grpquota) e/dev/hda5
terá suporte a ambos. Por padrão é assumido que os arquivos de controle de quota estão localizados no ponto de montagem da partição com os nomesquota.user
equota.group
. -
Agora será necessário criar os arquivos
quota.user
equota.group
no ponto de montagem de cada partição ext2 acima que utilizará o recurso de quotas. O arquivoquota.user
controla as quotas de usuários equota.group
controla as quotas de grupos.-
Crie um arquivo vazio
quota.user
em/
(terá suporte somente a quota de usuários, veja a opção de montagem no/etc/fstab
):touch /quota.user
ouecho -n >/quota.user
. -
Crie um arquivo vazio
quota.group
em/usr
(terá suporte somente a quota de grupos):touch /usr/quota.group
ouecho -n >/usr/quota.group
. -
Crie um arquivo vazio
quota.user
equota.group
em/pub
(este sistema de arquivos tem suporte a ambos os tipos de quota):touch /pub/quota.user /pub/quota.group
.
Por motivos de segurança, as permissões dos arquivos de controle de quota
quota.user
equota.group
devem ser leitura/gravação ao usuárioroot
e sem permissões para grupo/outros usuários:chmod 0600 /quota.user /quota.group
.OBS: Se deseja utilizar o quota versão 1, certifique-se que não existem os arquivos chamados
aquota.user
eaquota.group
no diretório raíz de sua partição. Se eles estiverem disponíveis, os utilitários de quota utilizarão esta versão como padrão, atualmente o kernel 2.4 possui somente suporte a quota versão 1.A versão 2 do quota checa corrompimento dos arquivos de dados de quota e trabalha mais rápido em partições grandes. São necessários patches da série "ac" (Alan Cox) para usar a versão 2 do quota.
-
-
Entre em modo monousuário
init 1
, desmonte os sistemas de arquivos que utilizarão a quota e monte-os novamente (isto serve para ativar as opções de quota). Alternativamente, executeumount -a
(para desmontar todos os sistemas de arquivos) emount -a
para remontar todos.Se você ativou as quotas para o sistema de arquivos
/
(como em nosso exemplo) será necessário reiniciar o sistema. -
O próximo passo é scanear o disco para criar os dados para as partições com suporte a quota (ativadas no
/etc/fstab
):quotacheck -augv
O parâmetro -a diz para checar todas as partições com suporte a quota no arquivo
/etc/mtab
, -u para checar quotas de usuários, -g para checar grupos e -v para mostrar o progresso da checagem da partição.Na primeira execução é mostrado uma mensagem de erro de arquivo
quota.user
/quota.group
corrompido, mas isto é normal porque o arquivo anterior tem tamanho zero. Estes nomes também servem para o quotacheck "auto-detectar" a versão do sistema de quota usada no sistema de arquivos.OBS: Certamente será necessário "forçar" a remontagem como somente leitura do sistema de arquivos
/
com a opção -m para o quotacheck criar as configurações de quota nesta partição. -
Agora resta ativar o suporte as quotas de disco em todas as partições (-a) com recurso de quota especificado (no
/etc/mtab
):quotaon -augv
As opções possuem o mesmo significado do comando quotacheck. O utilitário quotaoff serve para desativar quotas de usuários e usa as mesmas opções do quotaon. Estes três utilitários somente podem ser usados pelo usuário
root
. As opções de quota podem ser especificadas independente para cada sistema de arquivos:# Ativa o suporte a quota em /pub (somente grupos de usuários no momento). quotaon -gv /pub # Ativa as quotas de usuários em /pub quotaon -uv /pub # Desativa as quotas de grupos em /pub (deixando somente a de usuários ativa) quotaoff -gv /pub
A atualização de quotas durante a gravação/exclusão de arquivos é feita automaticamente. O utilitário quotacheck deverá ser executado sempre que o sistema de quotas for desativado (por não haver atualização automática dos dados de uso de disco) ou quando ocorrerem falhas de disco.
Na distribuição Debian o quotacheck é
disparado sempre que necessário após as situações de checagem de disco. As
quotas de todas as partições também são ativadas automaticamente pelo script
/etc/init.d/quota
e
/etc/init.d/quotarpc
.
Em sistemas que utilizam NFS e possuem sistemas de arquivos exportados em
/etc/exports
, o daemon rpc.rquotad
deverá ser carregado. Sua função é fornecer os detalhes de
quota dos sistemas de arquivos locais exportados para as
máquinas clientes.
O programa edquota é usado pelo root
para
editar as quotas de usuários/grupos. Por padrão, todos os usuários/grupos do
sistema não possuem quotas. Sua sintaxe é a seguinte
edquota [opções]
[usuário/grupo]
As opções podem ser:
- -u
-
Edita a quota do usuário especificado (esta é a padrão).
- -g
-
Edita a quota de grupo especificado.
- -r
-
Permite editar a quota de sistemas de arquivos remotos através do daemon rpc.rquotad.
- -p [usuário/grupo]
-
Usa os valores especificados para o usuário/grupo para definir a nova quota, sem necessidade de entrar no modo de edição.
- -t
-
Permite modificar o valor de tolerância dos limites que ultrapassam soft até que sejam bloqueados. Durante o tempo de tolerância, serão enviados somente avisos sobre a quota ultrapassada sem bloquear totalmente a gravação de arquivos (até que o limite hard seja atingido ou o tempo de tolerância seja ultrapassado).
Quando a quota soft do usuário/grupo é estourada, a
mensagem "warning: user disk quota excedeed" será exibida. Quando a quota
hard é ultrapassada, a gravação atual é interrompida e a
mensagem "write failed, user disk limit reatched" é mostrada ao usuário.
Nenhuma nova gravação que ultrapasse a quota hard é
permitida Por exemplo, para modificar a quota do usuário gleydson:
edquota gleydson
Disk quotas for user gleydson (uid 1000): Filesystem blocks soft hard inodes soft hard /dev/hda5 504944 500100 600000 10868 15000 20000
O editor de textos usado poderá ser modificado através da variável
$EDITOR
. Abaixo a explicação destes campos:
-
Filesystem
- Sistema de arquivos que terá a quota do usuário/grupo editada. As restrições se aplicam individualmente de acordo com o sistema de arquivos. -
blocks
- Número máximo de blocos (especificado em Kbytes) que o usuário possui atualmente. O usuáriogleydson
está usando atualmente 504944 Kbytes.-
soft
- Restrição mínima de espaço em disco usado. Atualmente 500100 Kb. -
hard
- Limite máximo aceitável de uso em disco para o usuário/grupo sendo editado. 600000 Kb atualmente. O sistema de quotas nunca deixará este limite ser ultrapassado.
-
-
inodes
- Número máximo de arquivos que o usuário possui atualmente na partição especificada. O usuáriogleydson
possui atualmente 10868 arquivos na partição/pub
.-
soft
- Restrição mínima de número de arquivos que o usuário/grupo possui no disco. Atualmente em 15.000. -
hard
- Restrição máxima de número de arquivos que o usuário/grupo possui no disco. Atualmente em 20.000.
-
Para desativar as restrições coloque "0" no campo soft ou hard. Quando o limite soft é atingido, o usuário é alertado por ter ultrapassado sua quota com a mensagem "warning: user quota excedeed" (quota do usuário excedida). O programa setquota é uma programa não-interativo para edição de quotas para ser usado diretamente na linha de comando ou em shell scripts.
Após ultrapassar o limite soft, começa a contagem do tempo
para que este passe a valer como limite hard (o máximo
aceitável e que nunca poderá ser ultrapassado). O comando edquota
-t
serve para modificar estes valores na partição especificada:
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/hda5 2days 7days
Abaixo a explicação destes campos:
-
Filesystem
- Sistema de arquivos que terá o período de tolerância modificado. -
Block grade period
- Tempo máximo de tolerância para usuários/grupos que ultrapassaram sua quota soft de espaço em disco antes de passar a valer como hard. No exemplo, o usuário tem 2 dias para excluir possíveis arquivos ou contactar o administrador para redimensionar o tamanho de quota. O valor padrão é 7 dias. -
Inode grade period
- Tempo máximo de tolerância para usuários/grupos que ultrapassaram sua quota soft de número de arquivos gravados antes de passar a valer como hard. No exemplo, o usuário tem 7 dias para excluir possíveis arquivos ou contactar o administrador para analisar seu tamanho de quota. O valor padrão é 7 dias.
OBS1: - O comando
quotacheck deverá ser executado na partição sempre que novas
restrições/limites forem editados com o edquota. Isto
atualiza os arquivos quota.user
e
quota.group
. Lembre-se de desativar o sistema de quotas
(quotaoff -ugv /partição
) antes de executar este comando
(para liberar totalmente a partição, quotacheck remonta a
partição somente para leitura quando é executado). Por este motivo é
recomendável fazer isso em modo monousuário.
OBS2: Quando o limite soft (suave) é excedido, o sistema começará a lhe mostrar mensagens alertando a passagem do limite (para lhe dar tempo de eliminar arquivos ou não ser pego desprevenido com o bloqueio de gravação) porque o limite hard (rígido) nunca poderá ser ultrapassado.
OBS3: - O tempo de tolerância restante ao usuário/grupo quando a quota é ultrapassada poder ser visualizada com o comando quota (veja “Verificando a quota disponível ao usuário”).
OBS4: - Quando o usuário exclui seus
arquivos e volta a ficar abaixo dos limites soft da quota,
o tempo de tolerância é resetado aos valores padrões (especificados por
edquota -t
.
OBS5: - As quotas de espaço em disco podem
ser definidas automaticamente para os novos usuários adicionados ao sistema
colocando o espaço em disco na variável
QUOTAUSER=numero
do arquivo
/etc/adduser.conf
. Isto será equivalente a digitar o
comando edquota -q QUOTA novo_usuário
.
Editar manualmente a quota de cada usuário é uma tarefa trabalhosa quando se está instalando quotas e possui muitos usuários, existe uma maneira mais fácil de fazer isso usando o próprio edquota e um usuário com a quota já definida. Por exemplo, instalamos quota em nosso sistema e queremos que todos os 300 usuários tenham a quota de usuário de 10MB e de grupo de 15MB:
-
Criamos um usuário com esta quota usando o edquota (como descrito em “Editando quotas de usuários/grupos”). Como exemplo usaremos o usuário
teste_user
. Use o comandoquota teste_user
para verificar se as quotas para este usuário está correta. -
Criamos um script que modifique a quota padrão de todos os usuários do sistema de uma só vez:
#!/bin/sh cd /home for USUARIO in * do edquota -u ${USUARIO} -p teste_user done
Pronto, verifique a quota de todos os usuários com o comando
repquota -a
.
Execute o comando quota mostra os limites de usuários/grupos e a tolerância restante antes do limite soft se tornar rígido. Abaixo alguns exemplos descritivos deste comando:
quota Disk quotas for user gleydson (uid 1234): Filesystem blocks quota limit grace files quota limit grace /dev/hda5 504944* 500100 600000 00:05 10868 0 0
Os campos tem o seguinte significado:
-
Filesystem
- Sistema de arquivos. -
blocks
- Número de blocos usados atualmente na partição (em Kb). O "*" indica que o limite foi ultrapassado. Atualmente em 504944.-
quota
- Limite suave (soft) de espaço na partição que o usuário/grupo possui. Atualmente 500100. O valor 0 indica que o usuário/grupo não possui restrições. -
limit
- Limite máximo (hard) de espaço na partição que o usuário/grupo possui. Atualmente em 600000. O valor 0 indica que o usuário/grupo não possui restrições. -
grace
- Tolerância antes que o limite soft passe a valer como hard quando o espaço em disco é ultrapassado. Este usuário tem 5 minutos restantes para que isto ocorra. Quando o valor soft volta a ficar abaixo da quota, a tolerância é resetada.O parâmetro "none" indica que o tempo de tolerância expirou (caso existam limitações de quota que foram ultrapassadas) ou que o usuário/grupo não possui restrições. Veja se existe um "*" no campo
blocks
.
-
-
files
- Número máximo de arquivos que usuário/grupo possui atualmente na partição. Um "*' indica que o limite foi ultrapassado. Atualmente em 10868.-
quota
- Limite suave (soft) de número de arquivos na partição que o usuário/grupo possui. Atualmente ilimitado. -
limit
- Limite máximo (hard) de número de arquivos na partição que o usuário/grupo possui. Atualmente ilimitado. -
grace
- Tolerância antes que o limite soft passe a valer como hard para o número de arquivos ultrapassados. Como não existe quota para número de arquivos, não existe tolerância. A tolerância é resetada aos valores padrões quando o valor soft volta a ficar abaixo da quota.
-
A quota de outros usuários/grupos podem ser visualizadas especificando as opções -u (padrão) e -g na linha de comando respectivamente. A opção -v permite visualizar quotas em sistemas de arquivos não alocados e -q mostra somente uma mensagem dizendo se o usuário está ou não dentro de sua quota:
quota -u usuario quota -uq usuario quota -g users
Por motivos de segurança, você não poderá visualizar as quotas de outros
usuários e grupos que não pertence (exceto para o usuário
root
).
Quando precisamos verificar o uso de quotas de todos os usuários/grupos do
sistema o quota se torna incômodo e pouco prático. O
comando repquota lista está disponível ao administrador para
facilitar esta tarefa. Sua listagem é organizada por partições listando dados
adicionais como grace time
e aceita as mesmas opções dos
utilitários quotaon e quotaoff. Primeiro
são listados as restrições de usuários e depois de grupos para a partição.
(tolerância) As opções aceitas por este utilitário tem o mesmo significado das
opções do quotaon e quotaoff:
repquota -aug *** Report for user quotas on device /dev/hda3 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 29160 0 0 none 9970 0 0 none daemon -- 64 0 0 22 0 0 man -- 944 0 0 65 0 0 mail -- 4960 0 0 823 0 0 news -- 4 0 0 1 0 0 gleydson -- 31032 0 0 6956 0 0 testuser -- 16 0 0 4 0 0 anotheruser -- 16 0 0 4 0 0 nobody -- 2344 0 0 2 0 0 *** Report for user quotas on device /dev/hda5 Block grace time: 2days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 16052 0 0 none 6443 0 0 none gleydson +- 4944 500100 600000 none 10868 0 0 *** Report for group quotas on device /dev/hda5 Block grace time: 7days; Inode grace time: 7days Block limits File limits Group used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 20308 0 0 none 636 0 0 none src -- 11404 0 0 660 0 0 users -- 1756 0 0 6561 0 0 gleydson -- 3452 0 0 9307 0 0
Um sinal de "+-" no segundo campo indica quota ultrapassada ou no espaço em disco, "-+' em número de arquivos e "++" em ambos. Como vimos acima, o este comando também lista o número de arquivos e bytes pertencentes a cada usuário na partição (mesmo não sendo monitorado pelas restrições de quota), isto ajuda a monitorar ações suspeitas com a excedência de espaço em disco de determinados usuários/grupos do sistema. Um exemplo é alguém que esteja fora da quota e abusando de seu usuário/grupo para uso excessivo de espaço em disco sem seu conhecimento.
OBS: Este utilitário pode ser executado por
qualquer usuário no sistema e mostrar o uso de quotas de usuários/grupos que
não deveria ter acesso. É recomendado deve ter permissões de leitura/gravação
somente para o usuário root
e sem permissões para
grupo/outros usuários.
Avisos sobre quota ultrapassada podem ser enviadas automaticamente a todos os
usuários pelo utilitário warnquota. Ele poderá ser
executado periodicamente através do cron (por padrão isto é
feito diariamente na distribuição Debian pelo script
/etc/cron.daily/quota
). Dados adicionais sobre o envio
das mensagens devem ser especificados no arquivo
/etc/warnquota.conf
seu formato é o seguinte:
# Programa usado para enviar as mensagens MAIL_CMD = "/usr/sbin/sendmail -t" # Campo de origem da mensagem FROM = "root@localhost" # but they don't have to be: SUBJECT = Quota excedida CC_TO = "root@localhost" SUPPORT = "root@localhost" PHONE = "5555-2525" #
O e-mail é enviado aos usuários (e usuários que pertencem a grupos com a quota excedida) com o seguinte formato:
From: root@localhost To: gleydson@debian.gms.com.br Cc: root@localhost Reply-To: root@localhost Subject: Quota Excedida Date: Sat, 22 Sep 2001 14:27:38 -0400 Hi, We noticed that you are in violation with the quotasystem used on this system. We have found the following violations: Block limits File limits Filesystem used soft hard grace used soft hard grace /dev/hda5 +- 504944 500100 600000 none 10868 0 0 We hope that you will cleanup before your grace period expires. Basically, this means that the system thinks you are using more disk space on the above partition(s) than you are allowed. If you do not delete files and get below your quota before the grace period expires, the system will prevent you from creating new files. For additional assistance, please contact us at root@localhost or via phone at 5555-2525.
Copyright © 1999-2020 - Gleydson Mazioli da Silva