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
.