我可以在我的 Ubuntu 20.04 计算机上打开默认的 Chromium Snap。然后我右键单击默认主页,单击Save As
,导航到我的~/home
目录,然后可以继续将.html
文件保存在我的主目录的任何位置。
为什么 Snap 软件包在实际使用中并未经过沙盒处理,却被宣传为“经过沙盒处理”?如果 Chromium snap 可以读取/写入我的主目录,那么 Chromium 程序,在本质上,有我城堡的钥匙。
普通人(例如我)最熟悉智能手机环境,并且可能将沙盒理解为类似这样的含义:
未经系统所有者明确许可,应用程序或程序不得访问任何系统资源。
这是我习惯的 Android 和 iOS 模式。Ubuntu 文档他们似乎是这么说的,但事实并非如此:
...每个包都经过沙盒处理,以便它在受限的环境中运行,与系统的其余部分隔离......
或者,我这里遗漏了什么吗?
答案1
铬卡扣封装得到适当的限制(无经典的限制)。Chromium 的 snap 封装开发人员挑选了合适的连接,以便封装得到很好的限制。
要查看连接列表,请运行以下命令。您可以使用 snap 包访问您的主目录,该访问权限是根据 Snap Store 上的请求根据具体情况启用的。
$ snap connections chromium
Interface Plug Slot Notes
audio-playback chromium:audio-playback :audio-playback -
audio-record chromium:audio-record :audio-record -
bluez chromium:bluez :bluez -
browser-support chromium:browser-sandbox :browser-support -
camera chromium:camera :camera -
content[gtk-3-themes] chromium:gtk-3-themes gtk-common-themes:gtk-3-themes -
content[icon-themes] chromium:icon-themes gtk-common-themes:icon-themes -
content[sound-themes] chromium:sound-themes gtk-common-themes:sound-themes -
cups-control chromium:cups-control :cups-control -
desktop chromium:desktop :desktop -
gsettings chromium:gsettings :gsettings -
home chromium:home :home -
joystick chromium:joystick :joystick -
mount-observe chromium:mount-observe - -
mpris - chromium:mpris -
network chromium:network :network -
network-bind chromium:network-bind :network-bind -
network-manager chromium:network-manager - -
opengl chromium:opengl :opengl -
password-manager-service chromium:password-manager-service - -
personal-files chromium:chromium-config :personal-files -
pulseaudio chromium:pulseaudio - -
raw-usb chromium:raw-usb - -
removable-media chromium:removable-media :removable-media -
screen-inhibit-control chromium:screen-inhibit-control :screen-inhibit-control -
u2f-devices chromium:u2f-devices :u2f-devices -
unity7 chromium:unity7 :unity7 -
upower-observe chromium:upower-observe :upower-observe -
x11 chromium:x11 :x11 -
答案2
安装的 Snap--classic
没有经过沙盒处理。
...从man snap
--classic
Put snap in classic mode and disable security confinement
限制某些程序更有意义,限制其他程序则更少。
答案3
实际上,它可能比你想象的更接近 Android 模型。
对系统其余部分的 Snap 访问由一组接口。一个接口用于网络,另一个接口用于蓝牙,另一个接口用于 /home 目录(仅顶层),另一个接口用于整个 /home 目录,等等。
快照允许使用的接口列在Snapcraft YAML 文件。Snapd 使用该 YAML 文件来实现访问控制。这旨在设置应用程序正常运行的基线最低访问权限。
安装 snap 后,您(管理员)可以使用 snapd 明确关闭(或打开)任何这些接口。您拥有控制权。