Во-первых, я использую Bubblewrap в качестве программного обеспечения для песочницы, но я чувствую, что это общая проблема монтажа. , чем пузырчатая пленка. Я пытаюсь добавить bwrap в оболочку песочницы называемую sandboxlib, детали не важны, кроме тесты, которые выполняются.
Один конкретный тест пытается смонтировать песочницу / из /foo/bar. Он содержит 2 подкаталога, data и bin.
Каталог bin просто содержит простой двоичный файл с именем «test-file-is-writable».
Если я бегу:
$ /usr/bin/bwrap --ro-bind /foo/bar / --tmpfs /data test-file-is-writable data/1/canary
Не удалось открыть data/1/canary для записи.
ОДНАКО монтаж / как записываемые работы
$ /usr/bin/bwrap --bind /foo/bar / --tmpfs /data test-file-re-write-data/1/canary
Записал данные в data/1/canary.
Однако я хочу, чтобы /data была доступна только для записи, и предполагаю, что остальная часть / будет ro
Добавление перемонтирования только для чтения по-прежнему не исправляет ситуацию.
$ /usr/bin/bwrap --ro-bind /foo/bar / --tmpfs /data --remount-ro / test-file-is-writable data/1/canary
Не удалось открыть data/1/canary для записи.
Продолжая отладку, я добавил монтирования/пути, необходимые для входа в интерактивную оболочку внутри песочницы.
$ /usr/bin/bwrap --bind /foo/bar / --tmpfs /data --ro-bind /lib /lib --ro-bind /lib64 /lib64 --ro-bind /bin /usr/bin - -remount-ро/баш
Выполнение простого ls из / показывает, что все смонтировано, как и ожидалось. Тестирование r/w все в порядке. Однако проблема заключается в том, что каталог /data полностью пуст (кроме вывода моего «touch /data/testwrite»). Обратите внимание, что исходный раздел /data, который я хотел смонтировать, на самом деле содержит файлы.
В. Я не понимаю, что здесь происходит? Или тесты неверны? Моя единственная работа, которую я вижу, - это копирование файлов из исходного ro /data в недавно смонтированный для записи /data