Introdução
Como todos estão acostumados a ouvir, o Linux é um sistema operacional multi-usuário; esta característica nada mais é do que a possibilidade de ser acessado por mais de um usuário ao mesmo tempo. Agora imaginemos o que seria do nosso sistema se não tivéssemos o controle da gravação em disco, para evitar desperdícios de espaço no servidor e um mau uso do disco por parte dos usuários. O Linux, por meio de cota de disco, permite controlar o quanto de espaço em disco cada usuário tem o direito de utilizar, e ainda o direito de escolher o que será feito se o espaço do usuário exceder o limite. A configuração das cotas de disco e sua implementação adequada no servidor garante um bom desempenho bem como sua segurança. Esta configuração é o que vamos ver neste artigo. Antes de apresentar os comandos, explicarei os quatro tipos de cotas em um sistema Linux: Limite hard por usuário Este limite é o máximo que um usuário poderá gravar no disco, lembrando que se o limite hard for atingido durante uma gravação de um arquivo, o mesmo será truncado e perdido. Limite soft por usuário Este limite é uma espécie de zona de alerta; ao ser atingido, o sistema irá informar que o mesmo foi alcançado e o usuário poderá continuar gravando até atingir o seu limite hard. Limite hard por-group O mesmo que por usuário. Limite soft por group O mesmo que por usuário. Período de tolerância Este período é o tempo que o usuário pode passar acima do limite soft; se este tempo for atingido o limite soft passa a ser o hard e o usuário só poderá gravar depois de fazer uma limpeza. Comando de manipulação de cota Quota Sintaxe: quota [opções] usuário/grupo Este comando exibe informações sobre cotas de usuários ou grupos, somente o "superusuário" root pode ver as informações de todos os usuários e grupos. Quando executado por um usuário ele poderá ver informações dele próprio ou do grupo a qual ele pertence. Opções: -q Só irá mostrar as cotas excedentes, modo silencioso. -v Habilita o modo verbose, exibe o estado da cota mesmo que não tenha sido excedido. Ex.: #quota -v Disk quotas for user root (uid 0): Filesystem blocks quota limit grace files quota limit grace /dev/hda5 199944 0 0 18 0 0 Quotacheck Sintaxe: quotacheck [opções] sistema_de_arquivos O quotacheck examina o sistema de arquivo e compila o banco de dados a ser utilizado. Opções: -a Faz a checagem em todos os sistemas de arquivos com cota habilitada no fstab. -g Faz a checagem de informações dos grupos. -u Faz a checagem de informações dos usuários. -v Habilita o modo verbose. -m Faz com que o comando não tente remontar o sistema de arquivo como somente leitura. Ex.: # quotacheck -aguvm quotacheck: WARNING - Quotafile /home/quota.user was probably truncated. Can't save quota settings... quotacheck: WARNING - Quotafile /home/quota.group was probably truncated. Can't save quota settings... quotacheck: Scanning /dev/hda5 [/home] done quotacheck: Checked 62 directories and 126 files Repquota Sintaxe: repquota [opções] sistema_de_arquivos O repquota é usado para exibição de relatórios sobre as cotas do sistema, este comando só pode ser utilizado pelo super usuário (root). Opções: -a Extrai um relatório de todos os sistemas de arquivos que estejam com as cotas habilitadas no fstab. -g Relata as cotas dos grupos. -u Relata as cotas dos usuários. -v Habilita o modo verbose. Ex.: #repquota -u /home *** Report for user quotas on device /dev/hda5Block grace time: 7days; Inode grace time: 7days Block limits File limitsUser used soft hard grace used soft hard grace-------------------------------- --------------------------------------root -- 199960 0 0 20 0 0 gustavo -- 33656 50000 60000 167 0 0 Comandos para definição de cotas. Edquota Sintaxe: edquota [opções] usuário/grupo O edquota edita a cota de usuários ou grupos, podendo ser estabelecida através de um usuário modelo criado anteriormente. Opções: -g Modifica as cotas dos grupos, se a opção -u for especificada a mesma será ignorada. -p Copia as cotas definidas de um usuário para outro, utilizando quando se tem um usuário modelo para implementação de cotas. -t Modifica os temps de graça da cota. -u Modifica as cotas de usuários, esta opção é ignorada quando combinada com o -g. Ex.: #edquota -u gustavo Disk quotas for user gustavo (uid 500): Filesystem blocks soft hard inodes soft hard /dev/hda5 33656 50000 60000 167 0 0 Comandos para Ativar/Desativar as Cotas de Disco. Quotaon Sintaxe: quotaon [opções] sistema_de_arquivo O quotaon habilita o sistema de cota para um ou mais sistemas de arquivos. Opções: -a Ativa o sistema de cota em todos os sistemas de arquivos, tanto para os usuários quanto para os grupos, que esta habilitado o sistema de quota no fstab. -g Ativa o sistema de cota para os grupos. -u Ativa o sistema de cota para os usuários. -v Ativa o modo verbose. Quotaoff Sintaxe: quotaoff [opções] sistema_de_arquivos O quotaoff desabilita o sistema de cota do Linux. Opções: -a Desabilita em todos os sistemas de arquivos que estão habilitados no fstab. -u Desabilita o suporte a cota dos usuários. -g Desabilita o suporte a cota dos grupos. -v Habilita o modo verbose. Implementando o sistema de cotas Edite o arquivo fstab. #vi /etc/fstab LABEL=/ / ext3 defaults 1 1 LABEL=/boot /boot ext3 defaults 1 2 devpts /dev/pts devpts gid=5,mode=620 0 0 tmpfs /dev/shm tmpfs defaults 0 0 LABEL=/home /home ext3 defaults 1 2 proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 LABEL=SWAP-sda3 swap swap defaults 0 0 Habilite o sistema de cota no sistema que desejar. Aqui irei habilitar no sistema de arquivos /home. Para habilitar basta adicionar o usrquota e o grpquota na secção de opções de montagem. LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2 Para evitar que precisemos da boot no sistema para que as opções de cotas sejam carregadas no sistema de arquivo /home, iremos fazer a remontagem com o seguinte comando: # mount -o remount /home Agora temos que criar os arquivos que irão guardar os bancos de dados das cotas dos usuários e grupos. #touch /home/quota.user #touch /home/quota.group Lembrando que temos que garantir que somente o root tenha acesso a esses arquivo, pois o unmask padrão do sistema é 022 e os arquivos tem por padrão a permissão 666 dando um resultado de 644 em sua propriedade. #umask 0022 [EMAIL PROTECTED] home]# ll total 52 drwx------ 63 gustavo gustavo 4096 Ago 7 09:17 gustavo drwx------ 2 root root 16384 Jun 20 18:50 lost+found drwxr-xr-x 2 root root 4096 Jul 13 20:15 netlogon -rw-r--r-- 1 root root 0 Ago 7 11:45 quota.group -rw-r--r-- 1 root root 0 Ago 7 11:45 quota.user drwxr-xr-x 2 root root 4096 Jul 3 21:02 share # chmod -v 600 quota.* modo de `quota.group' mudado para 0600 (rw-------) modo de `quota.user' mudado para 0600 (rw-------) Agora temos que inicializar o banco de dados das cotas, lembrando que se o tamanho for diferente de zero, indica que ele foi inicializado corretamente. # quotacheck -aguvm quotacheck: WARNING - Quotafile /home/quota.user was probably truncated. Can't save quota settings... quotacheck: WARNING - Quotafile /home/quota.group was probably truncated. Can't save quota settings... quotacheck: Scanning /dev/hda5 [/home] done quotacheck: Checked 62 directories and 126 files Agora temos que habilitar o sistema de cotas. #quotaon -a Deve-se agendar pelo menos uma vez por semana a checagem do banco de dados das cotas para que não haja nenhuma inconsistência. Para isso, temos que agendar na cron para rodar o quotacheck em todos os sistemas que estejam com quota habilitada. vi /root/quota.sh #!/bin/bash exec /sbin/quotacheck -augv #crontab -e 01 01 * * 0 /root/quota.sh Gustavo Henrique Soares dos Santos