Sistema de quotas de disco no Linux O sistema de quotas de disco serve para que você possa limitar o uso do disco dos usuários e grupos do sistema. Um exemplo de seu uso seria em uma empresa de grande porte onde os funcionários armazenam seus dados em um servidor central. Caso não limitemos o uso do disco, estes podem armazenar arquivos que não dizem a respeito do seu trabalho sobrecarregando o disco e logo a rede da empresa. Este tutorial usou como base a distribuição Mandriva One 2008.1, creio não haver dificuldades em outras distribuições. 2. Instalação Para que o sistema de quotas funcione, o kernel em uso deve estar compilado com suporte a quotas. Na distribuição Mandriva o suporte já é nativo ao kernel. A instalação será realizada com o gerenciado de pacotes URPMI, podendo ser feita a qualquer uma que a sua distribuição suportar. # urpmi quota 3. Configuração Deve-se especificar no arquivo /etc/fstab quais sistemas de arquivos terão a quota habilitada. Normalmente usa-se o /home pois é onde os usuários/grupos tem a permissão de gravação em disco. /dev/hda2 / ext3 defaults,grpquota 1 1 /dev/hda3 /home ext3 defaults,usrquota,grpquota 1 1 Percebam que na quarta coluna foram adicionadas entradas que habilitam o sistema de quotas para aqueles sistemas de arquivos. O sistema de arquivos /dev/hda2 (/ - Raíz) terá suporte a quota por grupos (grpquota), já o /dev/hda3 (/home) terá suporte a quota por usuários (usrquota) e grupos (grpquota). Com os sistemas de arquivos habilitados, devemos agora criar nossos arquivos que irão guardar as informações das quotas: # touch /aquota.group # touch /aquota.user # chmod 0600 /aquota.* Estes arquivos apenas o usuário root terá permissão de leitura e gravação. Após estes passos é necessário montar novamente os sistemas de arquivos. # mount -o remount / 4. Utilitários de quota 4.1. quotacheck Antes de colocarmos o sistema de quotas para funcionar, é preciso checar a integridade do sistema de arquivos. # quotacheck -auvgm
quotacheck [opções] -a
Checa todas as quotas para os sistemas de arquivos configurados no arquivo /etc/fstab.
-u usuário
Checa somente sistemas de arquivos onde será feita a quota por usuários.
-g grupo
Checa somente sistemas de arquivos onde será feita a quota por grupos.
-m Não tenta remontar sistemas de arquivos de apenas leitura. Faz a checagem forçada em sistemas de arquivos em modo de leitura e escrita -f Faz a checagem forçada mesmo o sistemas de quotas estando habilitado no sistema de arquivos. Não é recomendado. -v
Mostra todas as informações executadas pelo quotacheck.
Mais informações sobre as opções do quotacheck podem ser encontradas em sua página de manual. 4.2. quotaon, quotaoff Os utilitários quotaon e quotaoff servem para habilitar e desabilitar quotas aos sistemas de arquivos, respectivamente. Sempre que vai haver a checagem de integridade dos sistemas de arquivos deve-se desabilitar o sistema de quotas e depois habilitá-lo. #quotaon -aug 4.3. edquota, setquota Com nosso sistema de quotas funcionando é hora de editar as quotas dos usuário/grupos. # edquota user Disk quotas for user user (uid 500): Filesystem blocks soft hard inodes soft hard /dev/sda5 24 0 0 6 0 0 Onde: * Filesystem: Sistema de arquivos que estaremos editando as quotas (/dev/sda5) * Blocks: Número de blocos, especificado em kbytes que o usuário user tem em disco. * Soft: Restrição mínima que o usuário poderá usar. Edite conforme sua política.
* Hard: Restrição máxima que o usuário poderá usar. Edite conforme sua política, lembrando que este valor o usuário nunca irá ultrapassar. * Inodes: Número de arquivos que o usuário possui na partição. * Soft: Restrição mínima de arquivos que o usuário poderá usar. * Hard: Restrição máxima de arquivos que o usuário poderá usar. Ambos devem ser editados conforme sua política. Caso deixe com “0”, nenhum limite será imposto ao usuário/grupo. Algumas dúvidas podem surgir em relação aos soft e hard limits * Soft Limits: É o limite mínimo que o usuário pode gravar em disco. Assim que esse limite é ultrapassado o usuário receberá avisos sobre sua quota excedida. Ainda será possível gravar mais arquivos naquela partição até que chegue em hard limit ou até que seu tempo que foi determinado chegue ao fim. * Hard Limits: Quando o usuário chegar a este limite ele apenas poderá liberar espaço na partição. Se o limite estiver especificado por grupo, caso algum usuário chegue em hard limit nenhum outro usuário do grupo poderá escrever naquela partição, mesmo havendo espaço para ele.
Podemos especificar um tempo de tolerância que permite que o usuário fique entre soft limit e hard limit # edquota -tf /home 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/sda5 7days 7days
Onde: * Filesystem: Sistema de arquivos onde iremos aplicar o tempo. * Block grace period: Tempo de tolerância para usuários/grupos que ultrapassam sua quota soft, antes de passar a valer como hard. * Inode grace period: Tempo de tolerância para usuários/grupos que excedem o número de arquivos de soft, antes de passar a valer como hard. Este tempo de tolerância pode ser editado por dias, horas, minutos e segundos.
Algumas das opções do edquota: edquota [opções] -u usuário -g grupo -t
Edita as quotas de usuário. Edita as quotas do grupo.
Edita o tempo de tolerância (grace period) para os soft limits de cada sistema de arquivos.
-f filesystem Operações específicas para o sistema de arquivos determinado. -p usuário
Copia a configuração da quota de um usuário para outro.
Um outro programa para edição de quota de forma não interativa é setquota.
# setquota -a -u user 5000 7000 150 250
Desta maneira já passamos os valores soft e hard dos limites de bloco e inodes respectivamente. setquota [opções] -u usuário -g grupo
Define a quota para usuário. Define a quota para um grupo de usuários.
-a Todos os sistemas de arquivos com quotas. -t
Define o tempo de tolerância para usuários e grupos. Tempo especificado em segundos.
-r
Define quotas para sistemas de arquivos remotos.
Sempre após ter modificado a quota de usuário/grupo é importante que executemos o quotacheck para atualizar os arquivos aquota.user e aquota.group. Lembre-se de que primeiro deve-se desabilitar o suporte a quota ao sistema de arquivos, para depois executar a checagem e voltar a habilitar. Nesse período em que foi desabilitado o suporte a quota, o sistema de arquivos esta como somente leitura, caso houver algum acesso ao disco para gravação, este será recusado.
4.4. quota Para que possamos visualizar o uso em disco e seus limites, usamos o utilitário quota. # quota user Disk quotas for user user (uid 500): Filesystem blocks quota limit grace files quota limit grace /dev/sda5 32 5000 7000 8 1000 2000 quota [opções] -u usuário -g grupo
Exibe a quota do usuário. Exibe a quota do grupo.
-v
Exibe a quota mesmo que esta não esteja definida ao usuário passado como parâmetro.
-l
Exibe as quotas dos sistemas de arquivos locais.
-q
Exibe a quota quando somente esta for excedida.
4.5. repquota É de suma importância termos relatórios do sistema de quota. O comando repquota faz isso para nós.
# repquota -a
repquota [opções] -a
Exibe em um relatório todas as quotas de todos sistemas de arquivos definidos em /etc/mtab
-v
Exibe junto ao relatório um cabeçalho descritivo
-u usuário -g grupo -n
Exibe um relatório de utilização por usuário Exibe um relatório de utilização por grupo
Exibe um relatório não traduzindo UIDs/GIDs por nomes
4.6. convertquota O utilitário convertquota, como o próprio nome sugere faz a conversão da versão do sistema de quotas utilizado. Converte os antigos arquivos de quota quota.user e quota.group para aquota.user e aquota.group. Já estamos utilizando o novo formato.
# convertquota -ug / && rm -f /quota.*
Irá fazer a conversão e remover os antigos arquivos.
4.7. warnquota Um excelente utilitário que envia um e-mail ao usuário que ultrapassou seu soft limit. Toda sua configuração se encontra no arquivo /etc/warnquota.conf. Tipicamente o warnquota é agendado para executar diariamente via cron. Para que se tenha uma visão maior sobre cada utilitário, é de extrema importância ler suas páginas de manual.
5. Aplicando as quotas Após ter instalado o sistema de quotas, os usuários que já estão criados no sistema não tem limites de quotas. Para cada um deles deve-se estabelecer o sistema. Agora imagine você ter que editar as quotas para 500 usuários. Para não ter editar as quotas dos usuários manualmente, será necessário apenas termos uma conta, ao qual esta servirá como modelo para as restantes.
# adduser model -d /home/model -s /bin/bash # edquota -u model
Edite as quotas como bem queira. Depois de visualizar as quotas do usuário model (quota -u model), basta criar um shellscript para automatizar a tarefa.
#!/bin/bash cd /home for USUARIO in * do edquota -u{$USUARIO} -p model done
Dê permissão de execução e execute-o para que todos os outros usuários tenham seus limites de quotas.
6. Conclusão Como foi visto, o sistema de quotas é algo que um administrador de sistema que se preze deve dominar. O sistema de quotas é de fácil entendimento e leva ao administrador um poder total sobre o uso do disco por seus usuários.
7. Referências Guia Foca Linux Viva o Linux Quota Mini-Howto Páginas de manual: quota, edquota, setquota, repquota, quotacheck, quotaon, quotaoff, convertquota e quotacheck. –
Alterações – Eduardo de Oliveira Hernandes
Fonte: http://www.mandrivabrasil.org/site/content/view/59/29/