Drop — это инструмент для создания изолированных (sandbox) сред на Linux, который не мешает привычной работе.
Drop позволяет легко создавать изолированные среды для запуска программ и агентов написания кода, сохраняя при этом как можно больше элементов вашего рабочего окружения. Drop использует уже установленный дистрибутив, поэтому все установленные программы доступны внутри песочницы. Имя пользователя сохраняется, выбранные конфигурационные файлы остаются доступны для чтения.
Быстрый старт
Рабочий процесс навеян Python-инструментом virtualenv: создайте легко удаляемую среду, войдите в неё и работайте в обычном режиме — но уже с принудительной изоляцией.
Чтобы создать новую среду Drop, достаточно выполнить:
alice@zax:~/project$ drop init
Drop environment created with config at /home/alice/.config/drop/home-alice-project.toml
Чтобы запустить изолированный шелл в созданной среде:
alice@zax:~/project$ drop run
Созданная среда получает собственный домашний каталог с правом записи; выбранные файлы и каталоги из оригинального домашнего каталога доступны в режиме только чтения. По умолчанию среда имеет доступ к текущему рабочему каталогу в режиме чтения-записи, за исключением подкаталога .git, который доступен только для чтения:
(drop)alice@zax:~/project$ file ~/.bashrc
/home/alice/.bashrc: ASCII text
(drop)alice@zax:~/project$ file ~/.ssh
/home/alice/.ssh: cannot open `/home/alice/.ssh' (No such file or directory)
(drop)alice@zax:~/project$ echo "evil command" >> ~/.bashrc
bash: /home/alice/.bashrc: Read-only file system
Полное пошаговое руководство по установке и запуску Claude Code внутри среды Drop смотрите в туре по Drop.
Обзор песочницы
-
Drop не требует прав root и не может выполнять операции, недоступные текущему пользователю.
-
Для изоляции программ от хоста используются пространства имён Linux (namespaces): пользовательское (user), монтирования (mount), PID, IPC, cgroup и сетевое (network).
-
Опционально поддерживается запуск изолированных программ на пользовательском ядре gVisor, при этом системные вызовы (syscalls) поступают не напрямую к хостовому ядру.
-
По умолчанию сетевой доступ к сервисам на localhost запрещён. Для сетевой связи используется pasta.
-
Перед запуском изолированной программы сбрасываются все привилегии (capabilities), поэтому изолированные процессы не могут выполнять привилегированные операции, например монтирование (bind mounts), внутри пространства имён пользователя.
Drop использует пространство имён монтирования для формирования собственной корневой файловой системы, скрывая оригинальную файловую систему хоста. Подробнее — в разделе документации Filesystem layout.
Установка
Предварительные требования
Drop требует пакет passt/pasta для изолированной работы с сетью; он доступен в большинстве дистрибутивов Linux:
$ sudo apt-get install passt # Debian/Ubuntu
$ sudo dnf install passt # Fedora
$ sudo pacman -S passt # Arch
Установка Drop
Скачайте готовый бинарный файл из GitHub releases и поместите его в PATH:
# Укажите ARCH: amd64 или arm64
ARCH=$(uname -m | sed 's/x86_64/amd64/; s/aarch64/arm64/')
curl -o drop -L https://github.com/wrr/drop/releases/latest/download/drop-linux-$ARCH
install drop ~/.local/bin/
На Ubuntu 24+ требуется настройка AppArmor. На Fedora — настройка SELinux.
Команды
Для работы с Drop доступны следующие команды:
-
drop— показать справку -
drop init [ENV_ID]— создать новую среду Drop. ЕслиENV_IDне задан, он выводится из текущего рабочего каталога. -
drop run [-e ENV_ID] [command…]— запустить команду в среде Drop. Например:drop run -e vault13 ps aux. Если[command…]не указан, запускается шелл. Если-e ENV_IDне указан, идентификатор выводится из текущего рабочего каталога. -
drop ls— показать список созданных сред -
drop rm <ENV_ID>— удалить среду -
drop edit [ENV_ID или base]— открыть конфигурационный файл TOML в редакторе -
drop update --check— проверить наличие новой версии Drop
Дополнительно см. документацию Running.
Конфигурация
По умолчанию конфигурационные файлы Drop хранятся в ~/.config/drop. Большинство настроек следует размещать в base.toml — он общий для всех сред Drop. Кроме того, у каждой среды есть собственный файл <envid>.toml.
Просмотрите сгенерированный файл ~/.config/drop/base.toml и убедитесь, что файлы с секретными данными не оказались доступны.
Комментарии в сгенерированных файлах поясняют каждую настройку. Также можно обратиться к документации Configuration.
Drop в сравнении с другими инструментами
Drop ориентирован на удобный пользовательский опыт (UX) при локальной работе.
В отличие от runc, bubblewrap или nsjail — низкоуровневых строительных блоков для создания изолированных сред — Drop является высокоуровневым инструментом, предназначенным для непосредственного использования в повседневной работе без трудоёмкой настройки.
В отличие от Docker/Podman, Drop не предназначен для воспроизводимых серверных развёртываний с минимальными зависимостями. Предполагается, что локальная рабочая среда у каждого разработчика своя. Настройка нового компьютера со всеми нужными инструментами требует значительных усилий. Если изолированная среда лишена этих программ и предлагает пользователю минимальное окружение без привычных инструментов и конфигурационных файлов, такая песочница лишь мешает работе.
В отличие от Flatpak и Snap, Drop не предназначен для распространения изолированных десктопных программ. В случае Flatpak/Snap sandbox настраивает автор программы. В случае Drop sandbox включает сам пользователь, а запускаемые программы не должны ничего знать о Drop и специально его поддерживать.
Текущие ограничения
-
Только терминал. GUI-программы не будут работать в песочнице при конфигурации по умолчанию. Хотя технически можно открыть доступ к X-сокетам внутри песочницы, это предоставляет изолированным процессам избыточно широкие привилегии.
-
Внутри песочницы доступен лишь минимальный набор базовых устройств, поэтому, например, воспроизведение и запись звука недоступны.
-
Программы с битом setuid не запускаются в песочнице.
-
Запуск программ, зависящих от пространств имён пользователя Linux (Podman, программы, установленные через Snap), не поддерживается.
Сборка Drop из исходного кода
Требуется компилятор Go версии 1.25+.
Склонируйте репозиторий, загрузите зависимости и соберите Drop:
git clone https://github.com/wrr/drop.git
cd drop
make get-deps
make build
Для установки в /usr/local/bin (требуются права sudo):
sudo make install
Для установки в другой каталог передайте переменную BINDIR:
make install BINDIR=$HOME/.local/bin