Quotas de usuários Ubuntu Dapper

De gutocarvalho.net

Implementando quotas no ubuntu-server

Instalando quotas no ubuntu Sistema de arquivos: ext3 Autor: Guto Carvalho (gutocarvalho@gmail.com)

logue com seu usuário e depois digite:

root@servcchs:/home# sudo -s -H

digite a senha do seu usuário e você irá se tornar root

root@servcchs:/home#

Instale o pacote de ferramentas de quota

root@servcchs:/home# apt-get install quota

Agora precisamos editar o arquivo /etc/fstab

root@servcchs:/home# vim /etc/fstab
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
/dev/sda1 / ext3 defaults,errors=remount-ro 0 1
/dev/sda2 /home ext3 defaults 0 2
/dev/sda3 none swap sw 0 0
/dev/hdb /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/fd0 /media/fd0 vfat users,rw,noauto 0 0


Altere a seguinte linha:

/dev/sda2 /home ext3 defaults 0 2

para:

/dev/sda2 /home ext3 defaults,usrquota,grpquota 0 2

Salve o arquivo (:wq)

Digite mount e observe a seguinte linha:

root@servcchs:/home# mount

/dev/sda2 on /home type ext3 (rw)

A partição /home está montando apenas com opções rw = leitura e escrita, precisamos ativar as quotas, use o comando abaixo para ativa-las.

root@servcchs:/home# mount -t o remount /home

Digite mount e observe a linha novamente.

root@servcchs:/home# mount

/dev/sda2 on /home type ext3 (rw,usrquota,grpquota)

Normalmente precisamos cirar os seguintes arquivos:

aquota.user
aquota.group

para cria-los faremos o seguinte

root@servcchs:/home# touch /home/aquota.user
root@servcchs:/home# touch /home/aquota.group

e colocaremos a permissão textual rw------- ou na forma octal 600.

root@servcchs:/home# chmod u=rw-x,g=,o= /home/aquota.user
root@servcchs:/home# chmod u=rw-x,g=,o= /home/aquota.group

ou

root@servcchs:/home# chmod 600 /home/aquota.user
root@servcchs:/home# chmod 600 /home/aquota.group

porém quando instalamos o pacote quota o script de instalação já faz isto para gente no Ubuntu.

Agora precisamos rastrear os diretórios de usuários para verificar o espaço em disco que eles já estão utilizando para definirmos as quotas.

para fazer isto usaremos o comando abaixo:

root@servcchs:/home# quotacheck -vaugm
-v significa que ele vai mostrar detalhes do procedimento
-a significa que ele vai checar todos os sistemas de arquivos atras de diretorio home de usuarios
-u significa que ele vai analisar as quotas em nivel de usuario
-g significa que ele vai analisar as quotas em nivel de grupo
-m significa que ele nao vai remontar sistemas de arquivos read-only (somente leitura)

porém provavelmente voce pode receber esta mensagem, nos recebemos

root@servcchs:/home# quotacheck -auvgm
quotacheck: Quota for users is enabled on mountpoint /home so quotacheck might damage the file.
Please turn quotas off or use -f to force checking.

Ele fala que se fizermos as checagens com a quota ativada algo pode ser danificado. Temos duas opções:

1. usar o parametro -f e cruzar os dedos 2. desligar a quota e rodar a checagem

Resolvemos utilizar a segunda opção, :)

Utilizamos o seguinte comando

root@servcchs:/home# quotaoff /dev/sda2

Onde /dev/sda2 é a partição do ponto de montagem /home

Agora podemos checar os arquivos e diretorios dos usuarios.

root@servcchs:/home# quotacheck -auvgm
quotacheck: Scanning /dev/sda2 [/home] done
quotacheck: Checked 711 directories and 2594 files

Tudo tranquilo até o momento. Agora precisamos estabelecer as quotas.

Para isso vamos utilizar o comando edquota.

root@servcchs:/home# edquota -u gutera


Disk quotas for user gutera (uid 1007):
Filesystem blocks soft hard inodes soft hard
/dev/sda2 6576 61440 81920 456 0 0

Filesystem significa o sistema de arquivos, a particao em que está localizado o diretorio home deste usuario.

blocks: quantidade de blocos em KiloBytes que ele está utilizando. soft: limite flexivel a partir do qual o usuário recebe avisos referente ao uso de espaço. hard: limite máximo que o usuário pode utilizar em disco.

inodes: quantidade de inodes ou arquivos que o usuário pode ter soft: limite flexivel a partir do qual o usuário recebe avisos referente a sua quantidade de arquivos. hard: limite máximo de arquivos que o usuário pode ter.

Basta ajustar o tamanho neste arquivo.

grace period: é um período de tolerância básico, dentro do qual o usuário recebe avisos que ultrapassou seu SOFT LIMIT e que deve tomar alguma providência.

Use o comando abaixo para verificar o grace period

root@servcchs:/home# edquota -t
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/sda2 7days 7day

Pelo que estamos vendo está configurando por padrão

Obs.: Existem arquivos ocultos que são contabilizados, por exemplo os arquivos de configuração dos programas e perfil do usuário.

Analisando a saída do comando este usuário esta utilizando 6.5 MB e tem limite soft de 60 MB e limite hard de 80MB.

Como posso setar as quotas de outros usuários me baseando pelo usuário gutera.

Simples use o comando abaixo:

root@servcchs:/home# edquota -p gutera novousuario

Se você já tem dezenas, centenas ou milhares de usuários, fica complicado usar este comando, segue então um script para auxiliá-lo neste processo:

root@servcchs:/home# mkdir /root/scripts
root@servcchs:/home# cd /root/scripts
root@servcchs:/home# vi ajustaquotas.sh
#!/bin/bash

usuariofonte="gutera"

for i in `ls /home|grep -v aquota|grep -v lost+found`;do
echo -e "\nedquota -p $usuariofonte $i;"
edquota -p $usuariofonte $i;
done
root@servcchs:/home# chmod 700 ajustaquotas.sh
root@servcchs:/home# sh ajustaquotas.sh

Agora precisamos saber como obter informações das quotas dos usuários.

O Comando quota

Com este comando você terá a informação atualizada de quota que o usuário que está utilizando.

root@servcchs:~/scripts# quota
Disk quotas for user root (uid 0): none

Neste caso a partição em que se encontra o diretório do usuário não está utilizando sistema de quotas.

Você pode também especificar um usuário, caso esteja logado como root.

root@servcchs:~/scripts# quota gutera
Disk quotas for user gutera (uid 1007):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda2 6576 61440 81920 456 0 0

Para ter um panorama geral de uso das cotas utilize o comando repquota

root@servcchs:~/scripts# repquota /home
*** Report for user quotas on device /dev/sda2
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 131260 0 0 3 0 0
sysadmin -- 15308 0 0 564 0 0
granja -- 4908 61440 81920 424 0 0
butterfly -- 4344 61440 81920 427 0 0
hydrogen -- 4804 61440 81920 426 0 0
wbasmage -- 16 61440 81920 5 0 0
dimenor -- 5680 61440 81920 461 0 0
gutera -- 6576 61440 81920 456 0 0
#1002 -- 14512 0 0 536 0 0

root@servcchs:~/scripts#

Cuidado com o seguinte, o usuário root tem 131 MB sendo utilizado, porém quase todos o arquivo pertence ao root, não se engane.

O usuário sysadmin está utilizando aproximadamente 15 MB e tem cotas ilimitadas. O usuário granja está utilizando aproximadamente 4 MB e tem cota máxima de 80 MB.

Observe que não estamos limitando inodes, pois acreditamos que a quantidade de arquivos por usuário é irrelevante, é mais simples bloquear através de blocos.

Outra observação importante é que o comando 'quotacheck -auvgm' deve ser executado regularmente para manter as informações atualizadas. Uma solução é colocá-lo no cron.

root@servcchs:~/scripts# crontab -e

* 12 * * * /sbin/quotacheck -auvg

Desta forma todos os dias ele fará a atualização às 12:00 horas.

Bom é isto, aproveite o tutorial e fique a vontade para acrescentar mais informações.

Esperamos que você seja feliz, qualquer dúvida entre nas listas de discussão do GULMS.ORG.

Ferramentas pessoais