Короткий ответ
/etc/fstab описывает, какие файловые системы монтировать при загрузке, с какими опциями и точками монтирования; noexec запрещает выполнение бинарников с этого раздела, nosuid запрещает учитывать SUID/SGID-биты файлов на нём — обе опции снижают риск эксплуатации через загруженные извне файлы.
Как это работает подробнее
При монтировании ядро сохраняет флаги файловой системы в структуре vfsmount; при любой попытке exec() файла с раздела, смонтированного с noexec, ядро возвращает ошибку доступа независимо от прав файла, а при nosuid игнорирует биты setuid/setgid даже если они физически установлены на файле.
Пример кода
example.txt
# /etc/fstab
UUID=1234-5678 /tmp ext4 defaults,noexec,nosuid,nodev 0 2Что использовать на практике
- Практика. noexec,nosuid,nodev часто применяют к разделам, куда пользователи или приложения могут загружать произвольные файлы (/tmp, /var/tmp, точки монтирования для загрузки пользовательского контента), снижая поверхность атаки, если туда попадёт вредоносный исполняемый файл; важно учитывать, что некоторые приложения (например, часть пакетных менеджеров) ожидают возможность исполнения из /tmp и могут сломаться при noexec.
Подводные камни
- Риск. Частая ошибка — применить noexec к /tmp без тестирования и обнаружить, что часть инсталляторов или скриптов сборки, использующих /tmp как рабочую директорию для временных исполняемых файлов, перестаёт работать.