Bubblejail

出自 ArchWiki

Bubblejail 是基于 Bubblewrap 的沙箱实用程序。

Bubblejail 具有面向资源的权限模型。例如,x11 是一种可以添加到沙箱的资源。这将赋予沙箱访问 X11 显示服务器的权限。

Bubblejail 还使用 seccomp 和 D-Bus 过滤来增强安全性和权限模型。

Bubblejail 还具有图形界面,允许创建和配置沙箱。

安装

安装 bubblejailAURbubblejail-gitAUR

用法

Bubblejail 沙箱被分为实例。每个实例都是一个单独的主目录和一个权限配置。

每个实例通常沙箱化一个应用程序。

创建实例

新实例通常从可用的配置文件创建。配置文件是初始的权限集和使用的桌面条目。如果特定的应用程序缺少配置文件,则可以使用 generic 配置文件或空配置文件,并在创建后进行调整。

注意: 使用的配置文件仅决定初始的权限集。权限可以在创建后自由修改。

使用图形界面

运行 Bubblejail 配置 应用程序。在第一个屏幕的底部,将有一个 “创建实例” 按钮。

使用命令行

例如,创建一个 Firefox 实例

$ bubblejail create --profile firefox instance_name

运行实例

使用桌面条目

创建实例时,将生成一个 桌面条目,除非使用了 --no-desktop-entry 选项。

桌面条目将具有 instance_name bubble 名称,并且可以从桌面环境启动。

使用命令行

一旦创建,可以使用 run 子命令运行实例

$ bubblejail run instance_name args

如果未传递任何参数,则将使用基于所用配置文件的默认参数。

如果传递了args,则这些参数将在沙箱内执行。第一个参数应该是二进制文件名,后面的参数将传递给此二进制文件。

配置

创建实例后,可以修改其权限和资源。要使修改后的权限生效,需要重启沙箱。

创建沙箱时使用的配置文件仅影响初始的权限集。但是,删除某些权限可能会阻止目标应用程序正常工作。

使用图形界面

运行 Bubblejail 配置 应用程序。在第一个屏幕上,单击要修改的沙箱的名称。这将显示所有可用权限的列表和一个 “保存” 按钮。

使用命令行

Bubblejail 提供了 edit 命令,该命令将在 EDITOR 环境变量 中定义的编辑器中打开配置文件。

$ bubblejail edit instance_name

Bubblejail 使用 TOML 进行配置。定义的字典为特定资源赋予权限,字典内的键值对将设置特定的资源设置。

例如

[x11]

[home_share]
home_paths = [ "Downloads",]

此配置定义了沙箱可用的两个资源:x11 窗口系统,并共享主文件夹中的 Downloads 目录。

可用服务和选项在 bubblejail.services man 手册页 中进行了文档说明。

技巧和窍门

在沙箱内运行终端

使用 run 命令,可以在已运行的沙箱内启动终端。该终端可用于调试沙箱。

建议使用需要最少权限的终端应用程序,例如 Alacritty,它仅需要访问窗口系统。(x11wayland

$ bubblejail run instance_name alacritty

为相似应用重用配置文件

如果某个应用程序缺少配置文件,但存在具有现有配置文件的相关软件,则可以使用该配置文件。

例如,chromium 配置文件可以用于任何 chromium 派生的浏览器,例如 qutebrowser

首先,使用 chromium 配置文件生成实例,但禁用桌面条目的创建。

$ bubblejail create --no-desktop-entry --profile chromium qutebrowser

现在可以从 qutebrowser 的 桌面条目 创建桌面条目。

bubblejail generate-desktop-entry --desktop-entry /usr/share/applications/org.qutebrowser.qutebrowser.desktop qutebrowser

现在可以使用 qutebrowser bubble 桌面条目启动沙箱化的 qutebrowser。

参见