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 .