Опции монтирования /tmp как tmpfs: Совместимость и безопасность

Вопрос или проблема

Наличие SSD – рекомендуется монтировать /tmp как tmpfs.

Примеры:

Настройки монтирования разные в каждом примере – почему???

По умолчанию установка Ubuntu 16 настраивает параметры монтирования для корневой файловой системы (/) как (из /etc/mtab):

/dev/sda1 / ext4 rw,relatime,errors=remount-ro,data=ordered 0 0

Итак, все другие параметры – как предлагается в примерах/ссылках – не должны применяться.
Некоторые из параметров монтирования в различных примерах в интернете:

defaults,noatime,mode=1777

или:

defaults,noatime,nosuid,nodev,noexec,mode=1777,size=512M

Но:

  • Наличие noatime кажется бесполезным, потому что данные хранятся в оперативной памяти, которая и так быстрая.
  • Почему nosuid,nodev,noexec?
    Как они знают, зависят ли программы от определенных опций или нет?

Я думаю, лучше придерживаться стандартных разрешений, примененных при установке, то есть:

rw,relatime,mode=1777,uid=0,gid=0

Чтобы обеспечить правильную работу различных программ:

  • Разрешения 1777, потому что стандартные разрешения для /tmp также drwxrwxrwt (см. stat -c "%a %n" /tmp).
  • uid и gid установлены на root, потому что /tmp имеет такие же.

Есть ли что-то, что я упускаю?

Перед systemd стандартным способом активации tmpfs на /tmp было активировать его в /etc/default/tmpfs и установить RAMTMP=yes (даже если почти все редактировали /etc/fstab). Таким образом, вы можете увидеть, какие параметры по умолчанию. В моей системе Devuan Ascii параметры монтирования:

$ mount -l | grep "/tmp"
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime,size=3293980k)

Размер по умолчанию составляет 20% фPhysical memory + swap.

Так что, я думаю, вы не ошибетесь, используя те же параметры в /etc/fstab.

рекомендуется монтировать /tmp как tmpfs

Нет.

Вы можете смонтировать устройство tmpfs в /tmp, если вам все равно на потерю файлов при перезагрузке (tmpfs реализуется в памяти).

Итак, все другие параметры – как предлагается в примерах/ссылках – не должны применяться.

Эй? Вы не хотите этих опций? Или думаете, что операционная система проигнорирует их? В случае первого выберите те опции, которые вы хотите – они БУДУТ учтены / они НЕ наследуются.

Наличие noatime кажется бесполезным

Да, наличие atime или relatime имеет незначительные затраты здесь.

Почему nosuid,nodev,noexec ?

Потому что их можно использовать в /tmp. Однако использование битов слипших также снижает риск (всех?) атак, использующих эти векторы.

rw,relatime,mode=1777,uid=0,gid=0

rw – в общем-то, это полезно для временной файловой системы – но это также ПОВЕДЕНИЕ ПО УМОЛЧАНИЮ, так что вам не нужно это явно указывать.

relatime – на ваше усмотрение – но опять же это по умолчанию.

mode=1777,uid=0,gid=0 – если во время монтирования ваш /tmp не принадлежит root и доступен для записи всем, с установленным битом слипшего, тогда, вероятно, уже слишком поздно закрывать эти дыры.

Ответ или решение

Монтирование /tmp как tmpfs: Совместимость и безопасность

Использование tmpfs для монтирования /tmp рекомендуется в условиях, когда установлено SSD, поскольку это может повысить общую производительность системы. Однако такое решение зависит от нескольких ключевых аспектов, касающихся как совместимости программного обеспечения, так и вопросов безопасности.

Разнообразие опций монтирования

Вы заметили, что в примерах, представленных в различных статьях, используются разные опции для монтирования /tmp. Это объясняется тем, что разные системы и среды могут иметь разные требования и рекомендации, основанные на специфике использования. Например, опции, рекомендованные для одной системы, могут не подходить для другой.

Некоторые из популярных опций монтирования включают:

  • defaults,noatime,mode=1777
  • defaults,noatime,nosuid,nodev,noexec,mode=1777,size=512M

Каждая из этих опций имеет свою цель. Например:

  • noatime: Отключает обновление временной метки доступа к файлам, что может немного увеличить производительность. Однако, как вы правильно заметили, основное преимущество tmpfs заключается в малом времени доступа к данным, поэтому влияние этой опции может быть незначительным.

  • nosuid,nodev,noexec: Эти опции важны для повышения безопасности. Они ограничивают возможность выполнения бинарных файлов и создания специальных файлов в /tmp, что снижает риск эксплуатации уязвимостей. Важно понимать, что /tmp часто используется для выполнения временных файлов, поэтому наличие этих опций может помочь предотвратить потенциальные атаки.

Безопасность и совместимость

Вы правильно упомянули, что использование mode=1777, что соответствует стандартным правам доступа для /tmp, является хорошим практическим решением. Права 1777 обеспечивают возможность записи для всех пользователей, но защищают файлы от удаления другими пользователями за счет использования бита "sticky" (последний бит).

Тем не менее, соглашаться на использование только стандартных опций может быть небезопасно. Как вы отметили, необходимо учитывать случаи, когда существует угроза безопасности, особенно в условиях совместного использования системы несколькими пользователями или при запуске ненадежного программного обеспечения.

Заключение

Монтирование /tmp как tmpfs может значительно улучшить производительность, но важно правильное понимание опций монтирования, которые используются. Разные системы могут требовать разные настройки, и игнорирование параметров безопасности может привести к уязвимостям.

В конечном итоге выбор опций монтирования — это вопрос компромисса между безопасностью, производительностью и необходимостью совместимости с различным программным обеспечением. Рекомендуется протестировать различные конфигурации в вашей системе, чтобы определить наиболее оптимальный вариант, учитывая ваш конкретный сценарий использования и угрозы.

Оцените материал
Добавить комментарий

Капча загружается...