Colocar um limite no /tmp
size se ele estiver montado como tmpfs
é para evitar um ataque do DOS. Se um serviço estivesse comprometido ou um usuário malicioso, eles poderiam simplesmente escrever para /tmp
até que toda a troca e memória estivessem ocupadas.
Como a condição OOM não se aplica a arquivos, os processos seriam eliminados até que o shell do usuário mal-intencionado fosse eliminado (e ele não conseguiria efetuar login devido à falta de memória) ou o serviço comprometido seria eliminado. Neste estágio, o sistema seria muito lento para que o administrador realmente fizesse qualquer outra coisa e reiniciasse, o que limparia a evidência, tornando-a técnica efetiva do DOS.
Não tendo /tmp
como uma montagem separada, um problema ligeiramente diferente aconteceria. Tornar a partição /
completa pode tornar o sistema não inicializável e, em uma situação muito ruim (por exemplo, uma atualização da glibc), pode exigir muito mais reparos.
Embora esses problemas possam ser significativos para vários sistemas, há também um motivo para impedi-los para usuários de computadores. Por exemplo, uma vez eu usei um programa que tentava escrever vários GB de arquivos em momentos em que 512 MiB era uma grande quantidade de RAM, o que tornaria o sistema inutilizável se o tmpfs
fosse ilimitado. Desta forma, apenas causam problemas para o próprio programa e outros que tentam escrever para /tmp
.
50% da RAM para o tmpfs permite usar 50% da RAM para outras coisas, como rodar programas, evitando assim grandes trocas. Como geralmente é assumido que uma quantidade mínima de informação é mantida lá (41M no meu sistema), mas precisa ser rapidamente acessível é a razão de usar o tmpfs em primeiro lugar (não é necessário preservá-lo entre reinicializações). Assim, 50% é 'razoável' para ambos com grande folga no caso de um pico /tmp
de uso acontecer, ao mesmo tempo que impede a lentidão do sistema.
Como mencionado por abdelsaid, você pode alterar as configurações em /etc/fstab
:
none /tmp tmpfs size=2G 0 0 # Change the size= parameter to whatever you want
PS. Onde você está tentando compilar os kernels (em /tmp
)? Normalmente, você os compila com direitos de usuário E salva os resultados no caso de precisar de módulos de terceiros, etc. O gcc deve manter uma quantidade mínima de arquivos em /tmp
, evitando assim todo o problema.
Depois que você usar 4 GB de /tmp
no sistema de 4 GB, é possível (especialmente quando você estiver usando um ambiente de trabalho pesado) que o sistema diminuirá significativamente.