我最近从 18.04 版本升级到了 Ubuntu 20.04。从那时起, 20.04 自带snap
的基于 的chromium
浏览器无法访问/opt
我在系统上单独安装的分区中的任何项目。
如果我费力安装非snap
基于的版本chromium
,则在 20.04 下不会遇到此问题。
我不确定,但我认为访问 snap 程序正在运行的文件系统之外的文件系统的问题可能存在于所有snap
基于 的软件中,而不仅仅是chromium
。
我怎样才能让chromium
所有其他snap
基于的程序看到全部我已经挂载的文件系统?
非常感谢。
附言:在我的系统上,/opt
通过以下行安装/etc/fstab
...
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /opt ext4 defaults,auto 0 0
...其中 x 代替实际有效的 UUID。
聚苯硫醚:snap
我的系统上所有非基于的软件都可以毫无问题地访问此/opt
分区上的任何内容。
聚苯乙烯树脂:参考文章中建议的解决方案不能解决我的问题,因为我必须改变我的系统(更改安装、路径、脚本、ETC.),只是为了让这个残缺的snap
-basedchromium
像以前一样工作。我的目标是根本不改变我长期使用的系统设置,而是简单地安装一个chromium
可以以我多年来一直运行的方式运行的版本。我现在发布的答案展示了我学会如何做到这一点的方法。在发现消除 -basedsnap
并将chromium
其替换为传统版本的方法后,我花了不到 10 分钟的时间进行替换,chromium
以便一切都像它一直能够运行一样运行。
答案1
新的信息:我仍然坚持我的观点(现在在下面以“我的原始答案(精简版)”开头的部分),即 Ubuntu 应该同时提供其软件包的snap
和非snap
版本,而不是强迫我们所有人都使用这些snap
版本。但是,我还发现了如何绕过现有基于 的软件包的包含限制snap
:
snap
如果安装了基于Ubuntu 的标准chromium
软件包,我们可以像这样运行该程序:
/snap/chromium/current/usr/lib/chromium-browser/chrome [ ... args ... ]
这绕过了遏制限制。
我原来的答案(已删减):
(社论已删除)我遵循了以下讨论中的建议,该讨论解释了如何禁用残缺的snap
基于的版本chromium
并安装提供完整功能的版本,包括访问我想要访问的文件系统的能力:
如何在不丢失 Chromium 浏览器的情况下彻底删除 snap?
我没有snap
完全删除……我所做的只是执行了名为“eitch”的用户建议的部分(该讨论底部的 75% 左右)。使用这个非snap
版本chromium
解决了我的问题。
(社论已删除)
更新:另一个解决方案是让 Ubuntu 为软件提供snap
基于 和非snap
基于 的软件包,例如chromium
,这样我们每个用户都可以单独决定是否需要给定软件包的完整传统功能,或者是否要安装snap
基于 的软件包版本,这些版本利用了遏制机制,因此功能可能比旧版本少。(社论已删除)
另一更新flatpak
:我现在已经调查了和下的这种行为appimage
,并且通过这些服务运行的程序似乎可以毫无问题地访问我系统上可通过命令行访问的所有分区和文件。这种限制chromium
显然仅适用于snap
。
答案2
Snap 在设计上是沙盒化的。Snap 可以连接到“接口“以允许他们做特定的事情。没有预见到允许 snap 访问系统文件夹的接口。即使存在这样的接口,Chromium 的打包者仍然需要启用将接口连接到 snap。
mount --bind
一般来说,您可以通过 snap有权访问的文件夹下的文件夹来访问特定文件夹(“单独安装的文件系统”,一旦安装,就只是一个文件夹结构) 。
某些 snap 包可以在“经典”模式下安装。“经典模式”会移除所有沙盒,因此也会移除所有安全性。只有 snap 包已为此做好准备,才可以以经典模式安装。发布经典 snap 包需要 snap 商店维护人员的手动批准。因此,许多 snap 包无法以经典模式安装。
然而,也许您应该重新考虑您的工作流程:您真的需要您的浏览器来访问/opt
吗?
答案3
出于类似的原因,我放弃了基于 snap 的 Chromium,改用 Google Chrome(以 .deb 包的形式提供)。我只能推荐它。
答案4
通过以下方式启动 root shell
env SHELL=/bin/bash sudo -s
此后,为了能够使用/选择在 Chromium 中,
snap connect chromium:removable-media
mkdir -p /media/opt
echo "/opt /media/opt none bind" >>/etc/fstab
mount -a
exit
然后你应该可以使用/选择通过/媒体/选择在 Chromium 中。
如果您只需要临时访问,请将这一echo
行和mount
上面的行替换为
mount --bind /opt /media/opt
为了能够使用可能的子安装座,请使用rbind
而不是bind
。
您可以使用全部通过以下方式挂载文件系统/mnt/r/通过运行
mount --rbind / /mnt/r
(作为超级用户)如果目录/mnt/r存在。
看这里有关如何卸载绑定山。
请注意,挂载所有额外的文件系统可能存在安全风险。
看这里了解有关可移动媒体接口的信息。