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.

