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

Responder a