Введение
Утилита Bubblewrap (bwrap) представляет собой легковесный, но чрезвычайно гибкий инструмент для изоляции пользовательских сред в Linux. В отличие от тяжеловесных систем контейнеризации, она позволяет обычному непривилегированному пользователю разграничивать доступ к файловой системе, сетевому стеку и процессам без необходимости повышать права до root. В этой статье мы разберем практические сценарии применения bwrap на базе Ubuntu 24.04, познакомимся с базовыми флагами изоляции и наглядно изучим фундаментальные механизмы работы пространств имен (namespaces).
1. Развертывание Bubblewrap и запуск базового изолированного шелла
Для начала подготовим рабочую систему и загрузим необходимые пакеты из официального репозитория:

По своей сути bwrap запускает указанную команду внутри свежесозданного набора пространств имен ядра Linux, не требуя при этом привилегий суперпользователя. Чтобы создать минимальное изолированное окружение, администратор или скрипт монтирует лишь строго определенные системные директории хоста в режиме «только для чтения».
⚙️ [Ключевые параметры запуска]
--ro-bind : пробрасывает файл или директорию хоста в песочницу исключительно для чтения (Read-Only).--bind : подключает ресурс хоста с правами как на чтение, так и на запись.--dev : инициализирует стандартное виртуальное дерево устройств (/dev) внутри изолированной среды.--proc : монтирует псевдофайловую систему процессов (/proc), привязанную к новому пространству PID.--tmpfs : разворачивает временную файловую систему в оперативной памяти, недоступную за пределами сессии.--unshare-all : полностью отсекает песочницу от хоста по всем типам пространств имен (User, IPC, PID, Network, UTS, Cgroup).--symlink : формирует внутри песочницы символическую ссылку на заданный целевой путь.

2. Защита файлов хоста с помощью монтирования в режиме Read-Only
Для наглядной проверки ограничений файловой системы создадим на основной машине тестовый каталог /tmp/bwrap-test и сохраним в нем простой файл:

Подключим созданную папку внутрь окружения по пути /test, задействовав директиву --ro-bind. Прочитав содержимое файла из песочницы, убеждаемся, что исходная строка Original Content считывается без каких-либо затруднений:

Теперь проверим барьер безопасности и попытаемся перезаписать /test/data.txt прямо из изолированного шелла. Так как точка монтирования зафиксирована параметром --ro-bind, операция записи немедленно блокируется ядром, о чем свидетельствует статус ошибки и вывод сообщения Write protected successfully. Файлы на хосте остаются в полной неприкосновенности.

3. Разграничение пространств имен процессов и сети
Используя комбинацию ключей --unshare-pid и --proc /proc, мы изолируем таблицу процессов. В результате команда ps внутри песочницы видит исключительно локальное дерево: все фоновые службы и демоны хоста скрыты, а управление начинается с виртуального PID 1 для процессов bwrap, sh и ps:

Флаг --unshare-net изолирует сетевой стек: ядро формирует чистое сетевое пространство, не унаследовавшее интерфейсы хоста. В таком режиме изолированное приложение полностью отрезано от локальных и глобальных сетей — у него отсутствует даже активный интерфейс петли (lo), что исключает любые входящие и исходящие соединения:

4. Создание эфемерного рабочего пространства на базе tmpfs
Для задач, требующих временной записи промежуточных данных, отлично подходит опция --tmpfs /tmp. Она монтирует энергозависимый диск в оперативной памяти по указанному пути. Внутри сессии можно свободно создавать, модифицировать и читать файлы — например, лог-файл /tmp/sandbox.log:

Главное преимущество такого подхода проявляется в момент завершения работы контейнера. Заглянув в каталог /tmp на основном сервере, мы видим, что файл /tmp/sandbox.log бесследно исчез вместе с контекстом песочницы, подтверждая вывод Host filesystem remained completely untouched:

Мы детально разобрали базовые приемы построения изолированных окружений с помощью утилиты bwrap. Грамотно комбинируя права на файловые ресурсы, сетевые ограничения и пространства процессов, вы можете разворачивать легковесные и безопасные песочницы под любые прикладные сценарии.