Ограничение размера /tmp
если он монтируется как tmpfs
предназначено для предотвращения атаки DOS. Если один сервис был скомпрометирован или один пользователь вредоносный, они могли бы просто записать в /tmp
пока весь обмен и память не будут заняты.
Поскольку условие OOM не применяется к файлам, процессы будут уничтожены до тех пор, пока вредоносная пользовательская оболочка не будет уничтожена (и он не сможет войти в систему из-за нехватки памяти) или скомпрометированная служба будет уничтожена. На этом этапе система будет слишком медленной, чтобы администратор мог сделать что-то другое, кроме перезапуска, что стерло бы доказательства, что сделало ее эффективной техникой DOS.
Не имея /tmp
в качестве отдельного монтирования, могут возникнуть другие проблемы. Заполнение раздела /
может привести к тому, что система не загружается, а в очень плохой ситуации (например, обновление glibc) может потребоваться гораздо больше исправлений.
Хотя эти проблемы могут быть значительными для мультисистем, есть также причина предотвратить это для пользователей настольных компьютеров. Например, однажды я использовал программу, которая пыталась записать несколько ГБ файлов во времена, когда 512 МБ было большим объемом ОЗУ, что сделало бы систему непригодной для использования, если бы tmpfs
были неограничены. Таким образом, это создает проблемы только для самой программы и других, пытающихся записать в /tmp
.
50% ОЗУ для tmpfs позволяет использовать 50% ОЗУ для других целей, например, для запуска программ, что предотвращает большой обмен. Поскольку обычно предполагается, что там хранится минимальное количество информации (41 МБ в моей системе), но она должна быть быстро доступной, это причина использования tmpfs в первую очередь (нет необходимости сохранять ее при перезагрузках, чтобы включить ее). Таким образом, 50% является «разумным» для обоих с большим провалом в случае пикового /tmp
использования, в то же время предотвращая замедление системы.
Как уже упоминалось в abdelsaid, вы можете изменить настройки в /etc/fstab
:
none /tmp tmpfs size=2G 0 0 # Change the size= parameter to whatever you want
PS. Где вы пытаетесь скомпилировать ядра (в /tmp
)? Обычно вы компилируете их с правами пользователя и сохраняете результаты на случай, если вам нужны сторонние модули и т.д. Gcc должен хранить минимальное количество файлов в /tmp
таким образом избегая всей проблемы.
После того, как вы используете 4 ГБ /tmp
в системе 4 ГБ, возможно (особенно если вы используете тяжелую рабочую среду), что ваша система значительно замедлится.