Firejail 是一款轻量级安全工具,旨在通过为运行(可能不可信的)应用程序设置受限环境来保护 Linux 系统。
更具体地说,它是一个 SUID 沙箱程序,通过使用 Linux 命名空间、seccomp-bpf 和 Linux 能力来降低安全漏洞的风险。它允许一个进程及其所有后代进程拥有对全局共享内核资源(如网络栈、进程表和挂载表)的私有视图。Firejail 可以在 SELinux 或 AppArmor 环境中工作,并且与 Linux 控制组集成。
该软件用 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。
注意:确保使用程序的完整路径(例如,使用 firejail /usr/bin/firefox 而不是 firejail firefox),以避免潜在的 firejail-in-firejail 问题(参见 #2877)。
要启动沙箱,请在命令前加上 firejail: