我想透明地提供一个 Flatpak 应用程序,其中~/
包含位于我选择的任意位置的完全沙盒目录。
- 也就是说,我想沙箱化整体这样
~/
,写入任意子目录就可以按预期工作,并将其映射到外部磁盘上的某个位置(安装在/mnt/<disk-id>
)而不是~/.var/app/<app-id>
。 - 理想情况下我想搬迁全部特定应用程序的每用户数据,但我试图限制这个问题的范围。
- 我知道我可以通过授予对任意位置的访问权限
--filesystem=<path>
,并且可以~/
通过将用户下的各个子目录映射到相应的沙箱目录--persist=<path>
。然而,这些选项似乎都不能满足我的用例。
Flatpak 文档 (沙箱权限和Flatpak 覆盖)似乎表明沙箱使用临时文件系统并且仅绑定将特定目录挂载到其中。特别是,flatpak-override --persist
文档似乎意味着必须根据具体情况映射各个子目录才能持久保存数据。与此相矛盾的是,沙箱概述似乎是说这~/.var/app/<app-id>
只是绑定安装到沙箱~/
。后者似乎是实际发生的情况。当我使用沙盒应用程序在~/
其中创建未映射到沙盒的目录时,会~/.var/app/<app-id>
在应用程序重新启动时创建相应的目录并保留该目录。
鉴于明显的行为,简单地绑定安装到所需位置是否安全到~/.var/app/<app-id>
?我对盲目尝试这一点犹豫不决,因为我知道 Flatpak 正在幕后进行大量的文件系统恶作剧,以创建一个强大的沙箱。特别是,它pivot_roots沙箱文件系统,将绑定安装我已绑定安装到的位置(我需要在rbind
这里吗?),可以在子目录中执行进一步的绑定安装(这会很好地与我的绑定安装?),并且可能会采取其他预防措施(现在或将来),我担心这可能会破坏我以奇怪和创造性的方式完成的任何间接操作。