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 nomes quota.user
e
quota.group
.
Agora será necessário criar os arquivos quota.user
e
quota.group
no ponto de montagem de cada partição
ext2 acima que utilizará o recurso de quotas. O arquivo
quota.user
controla as quotas de usuários e
quota.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
ou
echo -n >/quota.user
.
Crie um arquivo vazio quota.group
em
/usr
(terá suporte somente a quota de grupos):
touch /usr/quota.group
ou echo -n
>/usr/quota.group
.
Crie um arquivo vazio quota.user
e
quota.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
e quota.group
devem ser
leitura/gravação ao usuário root
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
e aquota.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, execute umount -a
(para
desmontar todos os sistemas de arquivos) e mount -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:
Edita a quota do usuário especificado (esta é a padrão).
Edita a quota de grupo especificado.
Permite editar a quota de sistemas de arquivos remotos através do daemon rpc.rquotad.
Usa os valores especificados para o usuário/grupo para definir a nova quota, sem necessidade de entrar no modo de edição.
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ário gleydson
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ário gleydson
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 comando quota
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