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