Qual é a maneira mais eficiente de manipular / tmp e cotas de disco no Linux?

2

Estou executando um VPS com um servidor web (Apache + PHP), um banco de dados (MySQL) e um servidor smtp (Exim). SO: Debian Lenny RAM: 512MB Usando (quota) ( link ).

No momento, tenho /tmp montado como tmpfs. Isso não é ideal, pois eu tenho apenas 512MB de RAM e, portanto, /tmp é de apenas 256MB. Eu decidi criar um arquivo de partição ext3 de 1GB (ou o que quer que seja chamado) em /var/tmpdisk . (a decisão sobre o uso do ext3 foi feita depois de ler Askubuntu.com: Bom sistema de arquivos para / tmp? )

Para manter / tmp limpo durante a execução, descobri o tmpreaper: serverfault.com: Limpeza de / tmp

O que seria recomendado para limpar rapidamente /var/tmpdisk , mantendo as configurações de cota?

Atualmente, estou pensando em fazer o seguinte na inicialização ( /etc/rc.local ?):

  1. Verifique a existência de /var/tmpdisk . se não existir, execute dd if=/dev/zero of=/var/tmpdisk bs=1K count=1000000
  2. Crie o sistema de arquivos ext3 em /var/tmpdisk . Este foi o caminho mais rápido para mim na limpeza do "disco". Comando: mkfs.ext3 -F /var/tmpdisk
  3. Monte em /tmp : mount -t ext3 -o loop,rw,nodev,noexec,nosuid,quota /var/tmpdisk /tmp

Neste rascunho, não adicionei uma maneira de manter as configurações de cotas. Alguma idéia?

    
por Lekensteyn 13.12.2010 / 00:32

1 resposta

2

A maioria dos meus requisitos já estão disponíveis no Debian.

Por padrão, /etc/default/rcS define a variável de ambiente TMPTIME=0 .

$ man rcS :

TMPTIME

On boot the files in /tmp will be deleted if their modification time is more than TMPTIME days ago. A value of 0 means that files are removed regardless of age. If you don't want the system to clean /tmp then set TMPTIME to a negative value (e.g., -1) or to the word infinite.

Olhando em /lib/init/bootclean.sh , descobri que o arquivo de cota './aquota.user (owned by root) is excluded from removing. Conclusion: quota settings will persist during reboots and TMPTIME=0 can safely be set in /etc/default/rcS'.

Para manter /tmp clean durante a execução, instalei tmpreaper . Para ativá-lo, SHOWWARNING=true deve ser comentado. Além disso, TMPREAPER_TIME=7d deve ser descomentado para limpar arquivos com mais de 7 dias.

Um disco temporário de 1 GB foi criado e formatado como ext3 com:

# dd if=/dev/zero of=/var/tmpdisk bs=1K count=1000000
# mkfs.ext3 -F /var/tmpdisk

Montá-lo na inicialização exigiu uma alteração em /etc/fstab :

# /var/tmpdisk /tmp ext3 loop,rw,nosuid,noexec,nodev,quota 0 0

Como /var/tmpdisk não é um dispositivo real, ele deve ser montado como dispositivo de loop, portanto loop . nosuid,noexec,nodev foram adicionados como uma camada de segurança para impedir que os kits de exploração comuns abusem de /tmp . Finalmente, quota habilita a cota para o disco.

Depois de modificar /etc/fstab , executei mount -a para montar o novo disco /tmp . Como /tmp deve ser mundialmente gravável e os usuários não devem poder excluir arquivos que não possuem, as permissões do diretório também devem ser alteradas:

# chmod 1777 /tmp

Ativar cotas:

# quotacheck /tmp
# quotaon /tmp

Agora, /tmp atende totalmente às minhas necessidades com cotas ativadas e arquivos de limpeza automática. A única coisa que tenho que fazer é adicionar cotas para cada usuário executando edquota username .

    
por 18.12.2010 / 16:40

Tags