据我了解,快照必须声明它需要访问哪些接口,并且仅限于这些接口。
看着: https://developer.ubuntu.com/en/snappy/guides/interfaces/ 没有完整系统访问的选项。
我知道安全限制非常重要,但我希望使用快照作为 duplicity 备份的简单分发机制,它需要能够读取所有系统文件来备份它们,并对用户希望保存存档文件的任何位置进行写访问。
我知道这不是 snap 的主要用例,但是现在它们可以在多个发行版上使用并解决依赖问题,我正在探索这个想法,作为必须生成我们包的所有不同变体的替代方案。
我们是否能够根据自己的意愿改变快照,或者这种格式是否真的不适合需要那么多访问权限的事物?
答案1
是的,您需要一个授予磁盘完全访问权限的接口,并且这样的接口存在是合理的。它不会是一个自动连接接口,因为用户或使用 snap 制作设备的人需要明确告诉 snap 系统允许进行该连接,但接口本身是一个合理的请求。
如果你愿意的话,我建议你为 snapd 制定一个补丁,我们会将其纳入代码中。
答案2
自从我发布问题以来,Snapcraft 获得了一个新的限制选项:“经典”。
从:https://docs.snapcraft.io/snap-confinement
Classic 允许以与传统软件包大致相同的方式访问系统资源。为了防止滥用,发布经典快照需要手动批准,并且安装需要 --classic 命令行参数。
Duplicity 现在已经获得了经典限制的批准,我们已经开始以这种方式构建快照。
(也可以看看:https://github.com/snapcore/snapd/pull/6436这可能会为只需要读取整个文件系统的备份应用程序添加新的接口。)
答案3
你可以这样做;本质上,你是在要求你的 snap 不受限制,当你在开发模式下安装 snap 时,你就可以获得它:
sudo snap install --devmode <snap>
您仍然可以将开发模式快照上传到商店,但在与他人共享的方式上会受到一些限制(例如,您不能将它们放置在稳定的渠道中)。