1

首先,我使用Bubblewrap作为沙盒软件,但我觉得这是一个普遍的安装问题,而不是一个 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-is-writable 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 进行写入。

进一步调试,我添加了放入沙箱内的交互式 shell 所需的挂载/路径

$ /usr/bin/bwrap --bind /foo/bar / --tmpfs /data --ro-bind /lib /lib --ro-bind /lib64 /lib64 --ro-bind /bin /usr/bin - -remount-ro / bash

运行一个简单的 ls of / 显示一切都按预期安装。测试 r/w 没问题。然而,问题是 /data 目录完全是空的(除了我的 'touch /data/testwrite' 的输出)。注意我想挂载的原始 /data 分区,实际上包含文件。

问:我不明白这里的安装吗?还是测试错了?我能看到的唯一解决方法是将文件从原始 ro /data 复制到新写入的 /data

4

1 回答 1

0

data/1/canary是相对路径,当前目录不是根目录,因此您正在尝试写入其他位置

于 2020-04-30T00:59:32.110 回答