Bubblejail
Bubblejail 是基于 Bubblewrap 的沙箱实用程序。
Bubblejail 具有面向资源的权限模型。例如,x11 是一种可以添加到沙箱的资源。这将赋予沙箱访问 X11 显示服务器的权限。
Bubblejail 还使用 seccomp 和 D-Bus 过滤来增强安全性和权限模型。
Bubblejail 还具有图形界面,允许创建和配置沙箱。
安装
安装 bubblejailAUR 或 bubblejail-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,它仅需要访问窗口系统。(x11 或 wayland)
$ 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。