我想允许 snap 访问/读取/写入给定的文件夹$HOME/some_folder/*
,但不授予它访问我的完整文件夹的权限$HOME/*
(因为访问权限$HOME/some_folder
足以让这个 snap 完成它的工作,并且我想尽可能地“隔离”事物/作为预防措施,尽可能少地授予它访问我系统的权限,所以没有理由授予它访问我的完整文件夹的权限$HOME/*
)。
有办法吗?在网上读了一些资料后,我觉得“好”的方法是拒绝此 snap 访问主界面,但以某种方式设置一个新的(更受限制的)界面,以便$HOME/some_folder
允许此 snap 访问。这可行吗?如何做?
我使用的是 Ubuntu 22.04,但我认为这不会起到任何重要作用。
编辑1
这是为了在我的个人机器上运行外部提供的 snap - 我最初并没有意识到这个信息很重要。所以这意味着答案中建议的 AppArmor 是可行的方法 :)。
答案1
目前,Snapcraft 插件中没有允许在“Snap 商店级别的 snap”上实现此操作的机制
目前,Snapcraft 仅允许home
最窄的级别连接器进行访问$HOME
。
每https://snapcraft.io/docs/home-interface这解释了这个连接器:
这
home
界面允许访问用户主目录 ($HOME) 中用户拥有的非隐藏文件,用户通常将个人文件和文档存储在该目录中。大多数 snap 应用使用严格限制并且不能任意访问系统资源,包括文件和目录/家目录。如果没有此访问权限,home 将不会在文件请求者中可见,也不会作为 snap 应用程序内的目标。
这是最窄$HOME
根据浏览情况,访问Snaps 允许的目录支持的连接器列表。您可能能够使用特定于您的一个 snap 的 AppArmor 配置文件在每个安装了 snap 的端点系统上实现更严格的限制,但在 Snaps 中,除了 snapcraft 接口内置的方法之外,没有其他方法可以使允许的连接器的访问范围更窄。
popey 在注释中说得对,注释personal-files
可以比home
接口更窄,因为你可以赋予特定的读/写权限(见https://snapcraft.io/docs/personal-files-interface),但因为这是一个超级特权接口,任何 snap 的分发都personal-files
需要得到 Store 的特殊许可和批准才可以分发和安装。
如果您的目标是在商店中分发此 snap,并且想要采用更窄的personal-files
接口路线,那么您需要进行更严格的审查,并且如果您打算在personal-files
接口插件中定义这些项目,则需要联系 Snapcraft 商店经理以获得特别批准。如果您打算这样做,那么您必须先在您的 snap 中接受更严格的审查,然后才能通过 snap 商店分发。