Назад
Drop — rootless-пісочниця для Linux із підтримкою gVisor
SiTech AI Team3 წთ. საკითხავი

Drop — rootless-пісочниця для Linux із підтримкою gVisor

Drop — це пісочниця з відкритим кодом для Linux, яка ізолює програми та кодувальних агентів у тимчасових середовищах. Вона не потребує root, використовує вже встановлений дистрибутив і може запускати код на просторовому ядрі gVisor.

Drop — це пісочниця з відкритим кодом для Linux, яка ізолює окремі програми та кодувальних агентів у тимчасових середовищах, не вимагаючи переходу на контейнери. Проєкт опубліковано на droprun.sh, код доступний на GitHub, а на Hacker News він з'явився як допис Show HN. Задачу, яку розв'язують Docker і Podman, Drop розв'язує свідомо легшим шляхом.

Ізоляція без root

Робочий процес натхненний Python-івським virtualenv: ви створюєте середовище, входите в нього й працюєте звично, але ізоляцію забезпечує операційна система. Root не потрібен. Кожне середовище працює в user namespace Linux із власними просторами імен процесів, монтування, мережі, IPC та cgroup; перед запуском програми Drop знімає всі capability user namespace, тож вона не може виконувати привілейовані операції на кшталт bind mount.

У кожного середовища власна постійна домашня тека, а оригінальна — прихована. Системні каталоги відкриті з хоста лише для читання, /var і /tmp приватні, доступні лише кілька базових пристроїв, а доступ до сервісів на localhost типово заборонено; мережею опікується pasta.

Для чого це потрібно

Головний сценарій — кодувальні агенти. Запускати агента без запитів дозволу менш ризиковано, коли межі визначає не модель, а операційна система: випадкове rm -rf ~ не зачепить справжню домашню теку, а prompt injection, націлений на ~/.ssh, нічого не знайде. Другий сценарій — сторонні програми: пакет із PyPI чи npm працює в середовищі, тож шкідливий або скомпрометований реліз залишається всередині.

На відміну від контейнерних рушіїв, Drop використовує вже встановлений дистрибутив: не потрібно збирати образ чи налаштовувати контейнер, а програми хоста доступні як є. Конфігурація TOML визначає, які файли, каталоги та локальні сервіси відкрити, і всі середовища типово поділяють базовий конфіг.

gVisor і встановлення

Доступні два runtime: типовий native запускає програми безпосередньо на ядрі хоста через простори імен, а gvisor додатково виконує їх на просторовому ядрі gVisor, щоб системні виклики не потрапляли напряму до ядра хоста. Потрібен встановлений runsc, а режим вибирають у файлі TOML (runtime = "gvisor") або для окремої команди. gVisor додає накладні витрати й не повністю сумісний із ванільним ядром. Для встановлення потрібен пакет passt/pasta; на Ubuntu 24 профіль AppArmor має дозволити бінарнику drop використовувати user namespace, а на Fedora треба розширити політику SELinux, щоб pasta могла відкривати файли просторів імен.

Обмеження

Drop — інструмент для термінала: програми з графічним інтерфейсом за типової конфігурації не працюють, відкриття X-сокетів дало б надто широкі права, а відтворення чи запис звуку неможливі. Програми setuid не запускаються взагалі, а застосунки, що самі залежать від user namespace — Podman чи встановлені через Snap — не підтримуються.

SSiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.