Выпуск Bubblewrap 0.11, прослойки для создания изолированных окружений

Опубликована новая версия инструментария для организации работы изолированных окружений Bubblewrap 0.11, используемого для ограничения отдельных приложений непривилегированных пользователей. На практике Bubblewrap применяется проектом Flatpak в качестве прослойки для изоляции запускаемых из пакетов приложений. Для изоляции используются традиционные для Linux технологии контейнерной виртуализации, основанные на использовании cgroups, пространств имён (namespaces), Seccomp и SELinux. Код проекта написан на языке Си и распространяется под лицензией LGPLv2+.

Изоляция на уровне файловой системы производится через создание по умолчанию нового пространства имён точек монтирования (mount namespace), в котором при помощи tmpfs создаётся пустой корневой раздел. В данный раздел при необходимости прикрепляются разделы внешней ФС в режиме "mount --bind" (например, при запуске c опцией "bwrap --ro-bind /usr /usr" раздел /usr пробрасывается из основной системы в режиме только для чтения). Сетевые возможности ограничиваются доступом к loopback-интерфейсу с изоляцией сетевого стека через флаги CLONE_NEWNET и CLONE_NEWUTS.

Для исключения всех лишних идентификаторов пользователей и процессов из создаваемого изолированного окружения могут использоваться режимы CLONE_NEWUSER (user namespace) и CLONE_NEWPID (PID namespace), а для запрета получения новых привилегий применяется режим PR_SET_NO_NEW_PRIVS. На системах с "user namespace" Bubblewrap может запускаться под обычным пользователем, а на системах без "user namespace" может использоваться с флагом suid root для выполнения необходимой инициализации изолированного окружения.

В новом выпуске:

  • Предоставлена возможность создания точек монтирования, в которых используется моногослойная файловая система OverlayFS, объединяющая несколько частей других файловых систем. Для управления использованием OverlayFS предложены новые опции командой строки "--overlay", "--tmp-overlay", "--ro-overlay" и "--overlay-src".
  • Добавлена опция "--level-prefix" для подстановки в диагностический вывод уровня приоритета в стиле syslog, что позволяет использовать для обработки вывода такие утилиты, как "logger" и "systemd-cat".
  • Прекращена поддержка сборочной системы Autotools. Для сборки теперь необходим инструментарий Meson.