首先,我使用Bubblewrap作为沙盒软件,但我觉得这是一个普遍存在的问题,而不是一个bubblewrap问题。我正在尝试将bwrap添加到沙盒包装器called sandboxlib中,除了运行的测试之外,细节并不重要。
一个特定的测试尝试从“/ foo / bar”安装沙箱/。它包含2个子目录,数据和bin。
bin目录只包含一个名为'test-file-is-writable'的简单二进制文件。
如果我跑:
$ / usr / bin / bwrap --ro-bind / foo / bar / --tmpfs / data test-file-is-writable data / 1 / canary
无法打开数据/ 1 / canary进行写作。
但是,挂载/可写作品
$ / usr / bin / bwrap --bind / foo / bar / --tmpfs / data test-file-is-writable data / 1 / canary
将数据写入data / 1 / canary。
但是,我只想让/数据可写,并假设剩下的/是ro
以只读方式添加重装仍然无法解决问题
$ / usr / bin / bwrap --ro-bind / foo / bar / --tmpfs / data --remount-ro / test-file-is-writable data / 1 / canary
无法打开数据/ 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 /显示所有内容都按预期方式挂载。测试r / w都很好。然而,问题是/ data目录是完全空的(除了'touch / data / testwrite'的输出)。请注意我想要挂载的原始/数据分区,实际上包含文件。
Q值。我不明白这里的安装吗?或者测试错了吗? 我能看到的唯一工作就是将原始ro / data中的文件复制到新写入的数据
答案 0 :(得分:0)
data/1/canary
是相对路径,当前目录不是根目录,因此您尝试写入其他位置