Firejail 是一款轻量级安全工具,旨在通过设置受限环境来运行(可能不受信任的)应用程序,从而保护 Linux 系统。
具体来说,它是一个 SUID 沙箱程序,通过使用 Linux 命名空间(namespaces)、seccomp-bpf 和 Linux capabilities 来降低发生安全破坏的风险。它允许一个进程及其所有子进程拥有对全局共享内核资源(如网络栈、进程表和挂载表)的私有视图。Firejail 可以在 SELinux 或 AppArmor 环境中运行,并且已与 Linux 控制组(Control Groups)集成。
该软件使用 C 语言编写,几乎没有依赖项,可在任何运行 3.x 或更高版本内核的 Linux 计算机上运行。它可以对任何类型的进程进行沙箱化:服务器、图形应用程序,甚至用户登录会话。该软件包含许多常见 Linux 程序的沙箱配置文件,例如 Mozilla Firefox、Chromium、VLC、Transmission 等。
沙箱非常轻量,开销很低。无需编辑复杂的配置文件,无需打开套接字连接,也无需在后台运行守护进程。所有安全功能都直接在 Linux 内核中实现,并可在任何 Linux 计算机上使用。
快速入门 |
高级浏览器安全 |
Tor 浏览器安全 |
参见 SECURITY.md。
受支持的版本请参见 SECURITY.md。
注意:Debian stable 和 backports 中的版本可能已经过时,因此目前我们建议从最新版本下载并安装 .deb 软件包:
或者从源码构建。
Debian stable(bullseye):我们建议使用 backports 软件包。
注意:发行版和 PPA 中的版本可能已经过时,因此目前我们建议从最新版本下载并安装 .deb 软件包:
或者从源码构建。
注意:PPA 建议主要针对 firejail 本身;如果 firetools 和 firejail 相关工具不在 PPA 中,直接从发行版安装也没有问题,因为它们往往更新频率较低。
对于 Ubuntu 18.04+ 及其衍生版本(如 Linux Mint),强烈建议用户使用 PPA。
如何添加并从 PPA 安装:
sudo add-apt-repository ppa:deki/firejail
sudo apt-get update
sudo apt-get install firejail firejail-profiles
原因:Ubuntu 20.04 的 firejail 软件包在 Launchpad 上发布补丁后数月内,仍存在 CVE-2021-26910 漏洞:
另请参阅 https://wiki.ubuntu.com/SecurityTeam/FAQ:
Ubuntu 安全团队支持哪些软件?
Ubuntu 目前分为四个组件:main、restricted、universe 和 multiverse。main 和 restricted 中的所有二进制软件包在 Ubuntu 版本的生命周期内均由 Ubuntu 安全团队提供支持,而 universe 和 multiverse 中的二进制软件包则由 Ubuntu 社区提供支持。
此外,PPA 版本可能更新,并且包含更多配置文件修复。
详情请参阅以下讨论:
Firejail 可用于多个 Linux 发行版:
除上述例外情况外,只要您的发行版提供受支持版本的 firejail,通常建议从发行版安装。
安装后可通过 firejail --version 检查版本。
您也可以安装已发布的软件包之一。
从源码构建并安装当前开发版本的说明。
在适用的情况下,建议使用下面针对特定发行版的说明,因为它们会生成原生软件包,从而更易于与系统其他部分集成并方便软件包管理。
对于其他发行版,请参阅通用说明。
另请参阅 .gitlab-ci.yml 了解如何在 CI 中完成特定发行版的构建。
注意:AUR 软件包并非由我们维护。
从 AUR 安装 firejail-git。
示例:
yay -S firejail-git
适用于 Debian、Ubuntu 及其衍生版本:
注意:任何 ./configure 标志都应传递给 mkdeb.sh(例如 ./mkdeb.sh --enable-foo)。
sudo apt-get update -qy
sudo apt-get install -qy \
git build-essential fakeroot lintian libapparmor-dev pkg-config gawk
git clone 'https://github.com/netblue30/firejail.git' &&
cd firejail &&
./configure &&
make dist &&
./mkdeb.sh &&
sudo dpkg -i ./*.deb &&
make installcheck
适用于 Fedora 及其衍生版本:
注意:任何 ./configure 标志都应传递给 mkrpm.sh(例如 ./platform/rpm/mkrpm.sh --enable-foo)。
sudo dnf update -y
sudo dnf install -y rpm-build gcc make
git clone 'https://github.com/netblue30/firejail.git' &&
cd firejail &&
./configure &&
make dist &&
./platform/rpm/mkrpm.sh &&
sudo rpm -i ./*.rpm &&
make installcheck
通用构建/安装说明:
git clone 'https://github.com/netblue30/firejail.git' &&
cd firejail &&
./configure &&
make -j "$(nproc)" &&
sudo make install-strip &&
make installcheck
在 Debian/Ubuntu 上,您需要安装 git 和 gcc。
若要启用 AppArmor 支持进行构建(通常用于 Debian、Ubuntu、openSUSE 及其衍生版本),请安装 AppArmor 开发库和 pkg-config,并使用 --enable-apparmor ./configure 选项:
sudo apt-get install git build-essential libapparmor-dev pkg-config gawk
若要启用 SELinux 支持进行构建(通常用于 Fedora、RHEL 及其衍生版本),请安装 libselinux1-dev(Fedora 上为 libselinux-devel),并使用 --enable-selinux ./configure 选项。
有关从 git 使用 firejail 的详细信息,请参阅 wiki。