Перейти к содержанию
zoryn/ maintainer-assistant

Песочница

zoryn запускает скрипты из .gear/up.d/ и .gear/merge-up.d/ в песочнице для защиты чувствительных файлов (~/.ssh, ~/.gnupg, ~/.config) от ненадёжных скриптов из репозитория.

Установка

Bubblewrap для лёгкой изоляции:

apt-get install bubblewrap

Для гибридного режима (bwrap + chroot hasher с зависимостями сборки):

apt-get install bubblewrap hasher

Режимы запуска

РежимОписание
hybridbwrap + chroot hasher — использует зависимости сборки пакета (по умолчанию, если установлены оба инструмента)
bwrapТолько bubblewrap — лёгкая изоляция через namespaces, использует системные пути хоста
directБез изоляции — полный доступ к файловой системе (не рекомендуется)

Режим определяется автоматически: hybrid, если доступны bwrap и hsh; bwrap, если только bwrap; иначе direct.

Если настроенный режим недоступен, zoryn запросит подтверждение перед запуском хуков без изоляции. В неинтерактивном режиме выполнение отклоняется. Используйте --no-sandbox для пропуска подтверждения и запуска без песочницы.

Конфигурация

В ~/.zoryn:

[sandbox]
runner = "hybrid"
path = "/usr/bin:/bin"

[sandbox.chroot]
prepare = "gear-hsh --commit -- --mountpoints=/proc,/dev/pts,/dev/kvm --lazy-cleanup --build-srpm-only"

[sandbox.hasher]
workdir = "~/hasher"

Для отдельного проекта (~/.config/zoryn/projects.d/<project>.toml):

[sandbox]
runner = "hybrid"

[sandbox.chroot]
prepare = "gear-hsh --commit -- --mountpoints=/proc,/dev/pts,/dev/kvm --lazy-cleanup --build-srpm-only"

Дополнительные пакеты

В .gear/version-up:

[sandbox]
packages = ["go", "make", "curl"]

Пакет git ставится всегда. Пакеты из этой секции ставятся после подготовки chroot через hsh-install.

Флаги CLI

zoryn up --sandbox=hybrid    # использовать hybrid (по умолчанию)
zoryn up --sandbox=bwrap     # bubblewrap с путями хоста
zoryn up --no-sandbox        # полностью отключить песочницу

Как работает hybrid

В режиме hybrid hasher готовит chroot со сборочными зависимостями пакета (из spec-файла), а bwrap запускает скрипты, используя пути из этого chroot. Это даёт и изоляцию файловой системы, и доступ к нужным инструментам без setuid-привилегий во время выполнения.