Limitar o tamanho total de um diretório no linux

1

Eu tenho um daemon de serviço que cria muitos arquivos temporários. Recentemente meu servidor morreu, porque um usuário mal-intencionado conseguiu flood / tmp e encher o disco. Tomei algumas medidas para limpar ativamente o dir temp, mas além disso, gostaria de restringir o tamanho máximo do diretório temp desta aplicação.

Existe alguma maneira de criar dir, digamos, /apptmp , que nunca será maior que, por exemplo, 10G? Eu sei que posso definir limites de disco por usuário, mas eu só quero limitar este tmpdir; o aplicativo sempre deve poder escrever em outro lugar.

Estou executando o Ubuntu Linux 12.04.

edit: Tudo isso deve eventualmente ser embrulhado em um pacote Ubuntu instalável. Então eu não acho que eu queira confiar em modificar as partições, a menos que eu possa de alguma forma simular isso.

    
por Jeroen 25.04.2012 / 19:20

2 respostas

10

Você pode dar a /tmp sua própria partição. Então você terá certeza de que nunca excederá esse valor. Eu sugiro usar o LVM para que você possa aumentar e diminuir o tamanho da partição sempre que sentir a necessidade de fazê-lo.

    
por 25.04.2012 / 19:24
3

A resposta de Lucas é a melhor.

Se você conseguiu organizar seus discos de tal forma que não pode reparticionar facilmente suas unidades, você também pode usar uma montagem de loop usando um sistema de arquivos dentro de um arquivo de disco comum. Algo como:

$ dd if=/dev/zero of=/tmp/tmpdisk bs=1073741824 count=10
$ mke2fs /tmp/tmpdisk
$ sudo mount -o loop /tmp/tmpdisk /apptmp

Isso criará um arquivo de 10GB em / tmp, criará um sistema de arquivos dentro desse arquivo e, em seguida, montará o loop como / apptmp.

Mas, como observado, você deve fazer isso apenas se tiver se transformado em um canto com o esquema de particionamento de disco.

    
por 25.04.2012 / 19:40