Durante a semana passada fiquei tentando resolver um problema em um dos clientes que usa LTSP com Gnome e sistema de cota de disco para os usuários. O fato é que o Gnome não consegue efetuar login quando o usuário está acima da sua cota, e não avisa nada, apenas não loga e reinicia o X.
Depois de muito pesquisar e apenas encontrar que é necessário efetuar login em um terminal texto (tipo o failsafe), decidi que a melhor alternativa era fazer uma alteração no Xsession para ser possível a inicialização de uma sessão do Nautilus para que o usuário possa apagar seus arquivos dispensáveis e efetuar o login.
A solução é simples, mas não havia sido documentada ainda. Portanto, decidi documentá-la aqui. Todas as alterações devem ser feitas no servidor LTSP.
Softwares necessários
Para a solução funcionar como documentado aqui, são necessários os softwares a seguir. Claro que tu podes usar esse documento como base para a sua solução própria, usando outro frontend de quota.
- xdialog
- awk
- quota
- quotatools
Em sistemas baseados em /Debian/, pode ser usado o comando abaixo:
# aptitude install xdialog awk quota quotatools
Após ter instalado os softwares, é necessária uma pequena alteração no script /etc/gdm/Xsession
Alteração no script /etc/gdm/Xsession
As linhas abaixo devem ser incluídas no script /etc/gdm/Xsession, junto à linha 136 (ou próximo a ela). Verifique que a linha fica logo abaixo de um if usado para iniciar a sessão failsafe.
## Check quota! (by Luiz Guaraldo softwarelivre@gmail.com>)
overquota=`quota -v|grep “*”|wc -l`
if [ $overquota = 1 ]; then
quotatmp=”`quota -v|tail -n1|awk {‘print $2’}|cut -d “*” -f1`”
quotaused=”`echo “$quotatmp/1024”|bc`”
quotalimit=”`quota -v|tail -n1|awk {‘print $3’/1024}|bc`”
diferance=`echo $quotaused-$quotalimit|bc`
Xdialog —title “ATENÇÃO” —no-close —left —button-style icon /
—wrap —msgbox “ATENÇÃO:
Você excedeu sua cota de disco.
Antes que você inicie uma sessao é necessário que você /
apague alguns arquivos de seu diretório pessoal.
Sua cota em disco é de $quotalimit MB, mas você esta /
usando $quotaused MB.
Apague $diferance MB de arquivos do seu diretório pessoal /
e tente novamente.
Lembre-se que os arquivos de seu perfil pessoal do /
Windows (Área de Trabalho, Meus documentos, etc) /
também são contabilizados em sua cota.
Essa operação também pode ser feita através do Windows.
No final da execução, clique em \“Arquivo \” e /
\“Fechar Janela\”.” 25 80
nautilus —no-desktop —geometry=800×600+0+0 —browser
rm -rf ~/.Trash
fi
Finalizando
Pronto! Quando um usuário acima da cota tentar logar, em vez de entrar o Gnome, entrará uma mensagem informando que ele está acima da cota e, em seguida, uma sessão do Nautilus para ele apagar os arquivos. Ao finalizar a execução do Nautilus o servidor X será reiniciado para que ele possa logar novamente.

