Релиз модели3 августа 2026 г., 22:17 МСК🤖 Auto

Linux 7.3: Новая файловая система FailFS для изоляции процессов

В ядро Linux 7.3 интегрирован FailFS — минималистичная псевдо-файловая система, блокирующая все операции и предотвращающая выполнение динамических бинарных файлов.

Баннер новости 4983

Суть инновации: FailFS против NULLFS

Разработчики ядра Linux анонсировали включение в ветку 7.3 новой файловой системы FailFS. Она является «братом» уже существующей NULLFS, которая создает пустые, неизменяемые каталоги, возвращающие ошибку ENOENT (файл не найден). FailFS идет дальше: любая операция, направленная на эту файловую систему, немедленно прерывается с кодом ошибки EOPNOTSUPP (операция не поддерживается).

Технические характеристики и ограничения

FailFS спроектирована как «полностью кататоническая» система. Она монтируется один раз во время раннего запуска системы через kern_mount() и логически отделена от всех пространств имен монтирования. Это означает, что:

  • На FailFS невозможно смонтировать другие файловые системы.
  • Она не клонируется через OPEN_TREE_CLONE.
  • Не отображается в /proc/mountinfo, statmount() или /proc/filesystems.
  • Недоступна для монтирования из пользовательского пространства (userspace).

Механизм изоляции и безопасность

Главная цель FailFS — позволить процессам полностью сбросить свое состояние файловой системы. Если корневой или рабочий каталог процесса находится в FailFS, любые попытки разрешения путей (absolute paths, симлинки, AT_FDCWD) обречены на провал. Процесс обязан якорить каждый поиск пути по явным файловым дескрипторам.

Разработчик Christian Brauner отметил интересный побочный эффект: из-за того, как работает динамическое выполнение бинарных файлов с PT_INTERP, FailFS в текущей реализации блокирует выполнение динамических бинарных файлов, так как загрузчики используют абсолютные пути. Для управления этим состоянием планируются новые системные вызовы fchdir() и fchroot() с новым дескриптором FD_FAILFS_ROOT.

Минимализм кода

Драйвер FailFS отличается экстремальной простотой: сам код драйвера занимает менее 200 строк. Это делает его идеальным инструментом для тестирования и специфических задач изоляции, где требуется гарантированное отсутствие взаимодействия с файловой системой.

Характеристика NULLFS FailFS
Основная функция Возврат ошибки ENOENT (файл не найден) Возврат ошибки EOPNOTSUPP (операция не поддерживается)
Видимость в системе Доступна для монтирования Не видна в /proc, недоступна для userspace
Влияние на бинарники Не блокирует выполнение напрямую Блокирует динамические бинарники (из-за PT_INTERP)
Объем кода драйвера Информация недостаточна Менее 200 строк

Почему это важно

Интеграция FailFS в Linux 7.3 открывает новые возможности для создания высокоизолированных сред выполнения. Хотя текущая версия блокирует динамические бинарники, это открывает путь для разработки специализированных инструментов безопасности и тестирования, где критически важно исключить любое взаимодействие процесса с файловой системой на уровне ядра.

Источник: Phoronix ↗