什么是 snap 的经典模式,为什么有些 snap 没有它就无法安装(例如 MS Visual Studio)?

什么是 snap 的经典模式,为什么有些 snap 没有它就无法安装(例如 MS Visual Studio)?

我尝试使用以下命令在 Ubuntu 16.04 上安装 MS Visual Studio Code:

sudo snap install vscode

但出现了以下错误:

error: This revision of snap "vscode" was published using classic confinement and thus may perform
       arbitrary system changes outside of the security sandbox that snaps are usually confined to,
       which put your system at risk.

       If you understand and want to proceed repeat the command including --classic.

我想知道--classic标志的作用是什么(不仅仅是man页面解释)以及为什么我在安装 Visual Studio Code 时会出现之前的错误。

答案1

手表这段简短的视频这解释了 snap 中每个可用的限制模型、--classic存在的原因以及它们的用例。


来源:以下文件取自snapcraft.io:限制政策

严格的

这是应用于 snap 的默认安全策略。snap 仅在其自己的安装空间和选定区域中具有读取和/或写入权限。它可以访问它捆绑的库和/或由 core 或 ubuntu-core snap 提供的库。可以使用接口授予扩展权限,这些接口在安装时或由用户与快速连接命令。例如,home 接口将在用户主目录中授予读取权限。

严格限制为您提供以下可读和/或可写的路径:

  • /snap/snapname/revision(只读,Snap 安装路径)
  • /var/snap/snapname/revision(读/写,每个修订版本的数据)
  • /var/snap/snapname/common(读/写,通用数据)
  • /home/$USER/snap/snapname/revision (读/写,每个修订版本的用户数据)
  • /home/$USER/snap/snapname/common (读/写,通用用户数据)

查看列表环境变量了解有关严格限制的 snap 中可见内容的更多详细信息,以及如何在 snap 的受限空间内访问 shell。

开发模式

开发者模式,也称为 devmode,使用与严格限制相同的安全策略,但安全拒绝会变成警告/var/log/syslog(见调试)。这在 snap 一个应用程序时很有用,可以发现需要声明哪些接口。开发者模式下的 snap 不能发布到稳定和候选存储中频道

经典的

经典限制模式下的 snap 表现为传统打包的应用程序,具有对系统的完全访问权限。与严格模式和开发模式不同,经典 snap 认为“/”是主机系统的“/”,而不是核心 snap 的“/”。使用此完全开放安全策略的 snap 会在商店中手动审核,并且只允许在安装了 snapd 的系统上使用在传统的 Linux 发行版之上而不是从Ubuntu 核心图片。它们可以在所有商店发布频道

相关内容