Quotas de Disco no Linux
Enviado: 26 Jun 2013 22:45
A utilização de um sistema de quotas é um assunto tão importante quanto dividir o
disco rígido em partições. O sistema de quotas serve para limitarmos a quantidade
de blocos e “inodes” que um usuário ou grupo pode utilizar em uma determinada
partição.
O sistema de quotas é uma funcionalidade do “filesystem” e do kernel, sendo assim,
ambos têm que serem capazes de suportá-lo. Uma vez que o “filesystem” suporta
quotas, devemos adicionar os parâmetros de montagem, “usrquota” e “grpquota” ao
“filesystem” que utilizaremos com esse sistema. Isso é feito no arquivo “/etc/fstab”.
Além disso, temos que criar, na raiz desses “filesystems”, os arquivos de controle,
chamados “aquota.user” e “aquota.group”.
Uma vez criada essa estrutura, basta editar os arquivos de controle de quotas e
distribuir as quantidades de forma apropriada. A quota somente pode ser aplicada
por partições.
Instale o pacote de quota:
# aptitude install quota
#apt-get install quota
# yum install quota
Edite o arquivo “/etc/fstab” e inclua as opções de quota por usuário e por grupo em
“/home”:
UUID =12 e9cf3f -99b3 -4 e8e -8079 - d4337b2ce9c8 / home ext3 defaults ,
usrquota , grpquota 0 2
Remonte o “/home” para que as alterações sejam efetuadas:
mount -o remount / home
Verifique se as opções de quota foram aplicadas:
# mount
Crie os arquivos de quota na raiz da partição que receberá o sistema de quotas:
# quotacheck -cug / home
-c -> cria arquivos de quota
-u -> checa quotas de usuários
-g -> checa quotas de grupos Caso dê erro:
-f -> força checagem das quotas
-m -> força checagem no filesystem montado como leitura e escrita , não remonta o
filesystem como somente leitura em caso de erro.
Certifique-se de que os arquivos de controle de quota foram criados: "aquota.group"e
"aquota.user".
# ls -l / home
Habilite a quota na partição /home:
# quotaon / home
Caso queira desabilitar a quota na partição o comando é:
# quotaoff / home
Verifique se o sistema de quota está ativo, listando as suas informações de quotas
para usuários:
# repquota -va
Verifique se o sistema de quota está ativo, listando as suas informações de quotas
para grupos:
# repquota -vag
Quotas por Usuário:
Vamos definir qual a quantidade de recursos do HD que cada usuário poderá utilizar.
Vamos impor que o usuário “mandark” poderá utilizar até 50MB com um limite
máximo de 60MB ou 100 arquivos com o limite máximo de 110 arquivos.
Editando a quota do usuário mandark:
Editando a quota do usuário mandark:
# edquota -u mandark
Dentro do “edquota”, faremos as configurações para que a quota do usuário mandark,
seja de 50MB e ele possa criar 100 arquivos, com um limite máximo acima da
sua quota de 10MB e 10 arquivos. Altere o arquivo para que fique como mostrado a
seguir:
Disk quotas for user mandark ( uid 1001) :
Filesystem blocks soft hard inodes soft hard
/dev/ sda3 0 50000 60000 0 100 110
^-------NÃO MEXER -------^
Onde:
Filsesystem -> partição onde será aplicada a quota.
blocks -> tamanho real utilizado em KBytes. (não é possível alterar)
soft -> limite da quota de espaço disponível para gravação, ao ultrapassar este limite
o usuário estoura sua quota.
hard -> limite máximo permitido de espaço disponível para gravação, após exceder
sua quota, existe um período de tempo chamado “grace time” para uso deste limite.
inodes -> tamanho real utilizado em número de arquivos. (não é possível alterar)
soft -> limite da quota de número de arquivos que podem ser criados, ao ultrapassar
este limite o usuário estoura sua quota.
hard -> limite máximo permitido de número de arquivos que podem ser criado, após
exceder sua quota, existe um período de tempo chamado “grace time” para uso deste
limite.
Verifique se o limite já está aplicado:
# repquota -v -a
Já que fizemos a gentileza de determinar que o usuário poderá usar 10MB ou 10
arquivos a mais caso ele estoure a sua quota, devemos determinar também por
quanto tempo ele poderá usar esse espaço a mais.
Determine que os usuários terão 5 dias de “grace period”:
# edquota -t
Caso o usuário estoure sua quota ele tem um tempo(grace period) antes de sua conta ser bloqueada para apagar os arquivos necessários para utilizar o limite de
sua quota.
Consulte a quota do usuário “mandark”.
# quota -u mandark
Efetue login em outro terminal utilizando o usuário “mandark” e vamos rodar um
comando para encher o disco:
$ yes > a
Depois que a quota estourou, volte ao terminal do “root”, examine o status da quota
e veja se a quota do usuário mandark está estourada por espaço utilizado:
# repquota -va
Vamos executar o seguinte comando para estourar o número de “inodes” permitidos
para o usuário mandark:
$ touch file {1..100}
Depois que a quota estourou, volte ao terminal do “root”, examine o status da quota
e veja se a quota do usuário mandark está também por número de arquivos:
# repquota -va
Quando o usuário está com a quota estourada é possível aumentar o "grace period"
para ele:
# setquota -u mandark -T 86400 86400 / home
Onde: -u -> defini que a quota é pra um usuário mandark -> usuário que receberá a
definição de quota -T -> define o príodo de grace time 86400 -> tempo em segundos
(por tamanho) 86400 -> tempo em segundos (por inode) /home -> partição que será
definida a quota
Voltando ao terminal logado, como usuário “mandark”, vamos apagar os arquivos
criados:
$ rm a file *
Cheque os valores da quota do usuário mandark:
# quota -u mandark
Outra forma de definir a quota do usuário é através do comando setquota, este comando
é muito útil para scripts.
Vamos aumentar o tamanho da quota do usuário mandark:
# setquota -u mandark 200000 210000 1000 1010 / home
-u -> indica que será definida quota para um usuário
mandark -> usuário que receberá os valores da quota
200000 -> soft para espaço disponível para uso
210000 -> hard para espaço disponível para uso
1000 -> soft para número de arquivos
1010 -> hard para número de arquivos
home -> partição para aplicar a quota
Cheque os valores da quota do usuário mandark:
# quota -u mandark
Quotas por Grupo
Defina quota por grupo para o grupo “users”:
# setquota -g users 50000 60000 100 110
ou
Disk quotas for group users ( gid 100) :
Filesystem blocks soft hard inodes soft hard
/dev/ sda3 0 50000 60000 0 100 110
^----------NÃO MEXER ----------^
Verifique o status da quota por grupo:
# repquota -vag
Verifique os detalhes mais avançados sobre o uso das quotas nas partições.
# quotastats
Adicione o usuário mandark ao grupo users:
# adduser mandark users
Crie um diretório para teste de quota por grupo:
# mkdir / home / users
Troque sua permissão para toda vez que um arquivo for criado, pertença ao grupo
users, para isso mude também o grupo do diretório para ”users”:
# chmod 2775 / home / users
# chgrp users / home / users
Acesse o diretório /home/users com o usuário mandark e estoure a quota de grupo
por tamanho:
$ yes > a
Estoure a quota de grupo por número de arquivos:
$ touch arq {1..101}
Verifique o status da quota por grupo:
# repquota -vag
Replicando quotas
Verifique a quota por usuários:
# repquota -va
O usuário mandark tem quota definida e o usuário rh não tem, então vamos copiar a
quota do usuário mandark para o usuário herdeiro:
# edquota -up mandark herdeiro
Onde:
-u -> usuário
-p -> protótipo
-g -> grupo
Verifique a quota por usuários:
# repquota -va
Criando usuário com quota definida (Só funciona
no Debian)
Edite o arquivo /etc/adduser.conf e adicione um usuário que já tenha uma quota
definida na opção QUOTAUSER= . Ex: o usuário mandark já tem cota definida e
quero passar esta quota para um usuário novo:
# vim /etc/ adduser . conf
# linha 67 completo com o nome do usu á rio que tem quota definida :
QUOTAUSER =" mandark "
Crie um usuário com o comando adduser e veja que ele já terá quota definida:
# adduser compras
# repquota -va
Aviso de quota excedida
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’), no CentOS é necessário agendar a execução do comando
warnquota. 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..
Quando a quota é por grupo deve-se eleger um usuário para receber os e-mails de
quota excedida do grupo.
O arquivo /etc/quotagrpadmins serve para configurar o usuário que receberá os emails
de quota excedida do grupo:
# vim /etc/ quotagrpadmins
grupo : usuario
users : mandark
Para receber o aviso para usuários e para grupos execute:
# warnquota -u
# warnquota -g
Caso queira pode colocar no crontab para executar de tempos em tempos:
# vim /etc/ crontab
#min hora dia_do_mes mês dia_da_semana usu á rio comando
00 15 * * * root / usr / sbin / warnquota -u
4 00 15 * * * root / usr / sbin / warnquota -g
Obs.: O Debian já faz a checagem por padrão no crontab: /etc/cron.daily/quota.
disco rígido em partições. O sistema de quotas serve para limitarmos a quantidade
de blocos e “inodes” que um usuário ou grupo pode utilizar em uma determinada
partição.
O sistema de quotas é uma funcionalidade do “filesystem” e do kernel, sendo assim,
ambos têm que serem capazes de suportá-lo. Uma vez que o “filesystem” suporta
quotas, devemos adicionar os parâmetros de montagem, “usrquota” e “grpquota” ao
“filesystem” que utilizaremos com esse sistema. Isso é feito no arquivo “/etc/fstab”.
Além disso, temos que criar, na raiz desses “filesystems”, os arquivos de controle,
chamados “aquota.user” e “aquota.group”.
Uma vez criada essa estrutura, basta editar os arquivos de controle de quotas e
distribuir as quantidades de forma apropriada. A quota somente pode ser aplicada
por partições.
Instale o pacote de quota:
# aptitude install quota
#apt-get install quota
# yum install quota
Edite o arquivo “/etc/fstab” e inclua as opções de quota por usuário e por grupo em
“/home”:
UUID =12 e9cf3f -99b3 -4 e8e -8079 - d4337b2ce9c8 / home ext3 defaults ,
usrquota , grpquota 0 2
Remonte o “/home” para que as alterações sejam efetuadas:
mount -o remount / home
Verifique se as opções de quota foram aplicadas:
# mount
Crie os arquivos de quota na raiz da partição que receberá o sistema de quotas:
# quotacheck -cug / home
-c -> cria arquivos de quota
-u -> checa quotas de usuários
-g -> checa quotas de grupos Caso dê erro:
-f -> força checagem das quotas
-m -> força checagem no filesystem montado como leitura e escrita , não remonta o
filesystem como somente leitura em caso de erro.
Certifique-se de que os arquivos de controle de quota foram criados: "aquota.group"e
"aquota.user".
# ls -l / home
Habilite a quota na partição /home:
# quotaon / home
Caso queira desabilitar a quota na partição o comando é:
# quotaoff / home
Verifique se o sistema de quota está ativo, listando as suas informações de quotas
para usuários:
# repquota -va
Verifique se o sistema de quota está ativo, listando as suas informações de quotas
para grupos:
# repquota -vag
Quotas por Usuário:
Vamos definir qual a quantidade de recursos do HD que cada usuário poderá utilizar.
Vamos impor que o usuário “mandark” poderá utilizar até 50MB com um limite
máximo de 60MB ou 100 arquivos com o limite máximo de 110 arquivos.
Editando a quota do usuário mandark:
Editando a quota do usuário mandark:
# edquota -u mandark
Dentro do “edquota”, faremos as configurações para que a quota do usuário mandark,
seja de 50MB e ele possa criar 100 arquivos, com um limite máximo acima da
sua quota de 10MB e 10 arquivos. Altere o arquivo para que fique como mostrado a
seguir:
Disk quotas for user mandark ( uid 1001) :
Filesystem blocks soft hard inodes soft hard
/dev/ sda3 0 50000 60000 0 100 110
^-------NÃO MEXER -------^
Onde:
Filsesystem -> partição onde será aplicada a quota.
blocks -> tamanho real utilizado em KBytes. (não é possível alterar)
soft -> limite da quota de espaço disponível para gravação, ao ultrapassar este limite
o usuário estoura sua quota.
hard -> limite máximo permitido de espaço disponível para gravação, após exceder
sua quota, existe um período de tempo chamado “grace time” para uso deste limite.
inodes -> tamanho real utilizado em número de arquivos. (não é possível alterar)
soft -> limite da quota de número de arquivos que podem ser criados, ao ultrapassar
este limite o usuário estoura sua quota.
hard -> limite máximo permitido de número de arquivos que podem ser criado, após
exceder sua quota, existe um período de tempo chamado “grace time” para uso deste
limite.
Verifique se o limite já está aplicado:
# repquota -v -a
Já que fizemos a gentileza de determinar que o usuário poderá usar 10MB ou 10
arquivos a mais caso ele estoure a sua quota, devemos determinar também por
quanto tempo ele poderá usar esse espaço a mais.
Determine que os usuários terão 5 dias de “grace period”:
# edquota -t
Caso o usuário estoure sua quota ele tem um tempo(grace period) antes de sua conta ser bloqueada para apagar os arquivos necessários para utilizar o limite de
sua quota.
Consulte a quota do usuário “mandark”.
# quota -u mandark
Efetue login em outro terminal utilizando o usuário “mandark” e vamos rodar um
comando para encher o disco:
$ yes > a
Depois que a quota estourou, volte ao terminal do “root”, examine o status da quota
e veja se a quota do usuário mandark está estourada por espaço utilizado:
# repquota -va
Vamos executar o seguinte comando para estourar o número de “inodes” permitidos
para o usuário mandark:
$ touch file {1..100}
Depois que a quota estourou, volte ao terminal do “root”, examine o status da quota
e veja se a quota do usuário mandark está também por número de arquivos:
# repquota -va
Quando o usuário está com a quota estourada é possível aumentar o "grace period"
para ele:
# setquota -u mandark -T 86400 86400 / home
Onde: -u -> defini que a quota é pra um usuário mandark -> usuário que receberá a
definição de quota -T -> define o príodo de grace time 86400 -> tempo em segundos
(por tamanho) 86400 -> tempo em segundos (por inode) /home -> partição que será
definida a quota
Voltando ao terminal logado, como usuário “mandark”, vamos apagar os arquivos
criados:
$ rm a file *
Cheque os valores da quota do usuário mandark:
# quota -u mandark
Outra forma de definir a quota do usuário é através do comando setquota, este comando
é muito útil para scripts.
Vamos aumentar o tamanho da quota do usuário mandark:
# setquota -u mandark 200000 210000 1000 1010 / home
-u -> indica que será definida quota para um usuário
mandark -> usuário que receberá os valores da quota
200000 -> soft para espaço disponível para uso
210000 -> hard para espaço disponível para uso
1000 -> soft para número de arquivos
1010 -> hard para número de arquivos
home -> partição para aplicar a quota
Cheque os valores da quota do usuário mandark:
# quota -u mandark
Quotas por Grupo
Defina quota por grupo para o grupo “users”:
# setquota -g users 50000 60000 100 110
ou
Disk quotas for group users ( gid 100) :
Filesystem blocks soft hard inodes soft hard
/dev/ sda3 0 50000 60000 0 100 110
^----------NÃO MEXER ----------^
Verifique o status da quota por grupo:
# repquota -vag
Verifique os detalhes mais avançados sobre o uso das quotas nas partições.
# quotastats
Adicione o usuário mandark ao grupo users:
# adduser mandark users
Crie um diretório para teste de quota por grupo:
# mkdir / home / users
Troque sua permissão para toda vez que um arquivo for criado, pertença ao grupo
users, para isso mude também o grupo do diretório para ”users”:
# chmod 2775 / home / users
# chgrp users / home / users
Acesse o diretório /home/users com o usuário mandark e estoure a quota de grupo
por tamanho:
$ yes > a
Estoure a quota de grupo por número de arquivos:
$ touch arq {1..101}
Verifique o status da quota por grupo:
# repquota -vag
Replicando quotas
Verifique a quota por usuários:
# repquota -va
O usuário mandark tem quota definida e o usuário rh não tem, então vamos copiar a
quota do usuário mandark para o usuário herdeiro:
# edquota -up mandark herdeiro
Onde:
-u -> usuário
-p -> protótipo
-g -> grupo
Verifique a quota por usuários:
# repquota -va
Criando usuário com quota definida (Só funciona
no Debian)
Edite o arquivo /etc/adduser.conf e adicione um usuário que já tenha uma quota
definida na opção QUOTAUSER= . Ex: o usuário mandark já tem cota definida e
quero passar esta quota para um usuário novo:
# vim /etc/ adduser . conf
# linha 67 completo com o nome do usu á rio que tem quota definida :
QUOTAUSER =" mandark "
Crie um usuário com o comando adduser e veja que ele já terá quota definida:
# adduser compras
# repquota -va
Aviso de quota excedida
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’), no CentOS é necessário agendar a execução do comando
warnquota. 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..
Quando a quota é por grupo deve-se eleger um usuário para receber os e-mails de
quota excedida do grupo.
O arquivo /etc/quotagrpadmins serve para configurar o usuário que receberá os emails
de quota excedida do grupo:
# vim /etc/ quotagrpadmins
grupo : usuario
users : mandark
Para receber o aviso para usuários e para grupos execute:
# warnquota -u
# warnquota -g
Caso queira pode colocar no crontab para executar de tempos em tempos:
# vim /etc/ crontab
#min hora dia_do_mes mês dia_da_semana usu á rio comando
00 15 * * * root / usr / sbin / warnquota -u
4 00 15 * * * root / usr / sbin / warnquota -g
Obs.: O Debian já faz a checagem por padrão no crontab: /etc/cron.daily/quota.