> For the complete documentation index, see [llms.txt](https://handbook.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://handbook.bsdcn.org/di-17-zhang-jail-yu-rong-qi/17.1.-gai-shu.md).

# 17.1.概述

由于系统管理是一项复杂任务，开发出许多工具以简化管理员的工作。这些工具常常用于改进系统的安装、配置和维护方式。其中一个可用于增强 FreeBSD 系统安全性的工具就是 *jail*。从 FreeBSD 4.X 开始，jail 便已提供，并且在其实用性、性能、可靠性和安全性方面不断增强。

jail 建立在 [chroot(2)](https://man.freebsd.org/cgi/man.cgi?query=chroot\&sektion=2\&format=html) 的概念之上，chroot 用于更改一组进程的根目录。这种方式创建了与系统其余部分隔离的安全环境。在 chroot 环境中创建的进程无法访问其外部的文件或资源。因此，若 chroot 环境中运行的服务被攻破，不应让攻击者借此攻破整个系统。

然而，chroot 存在若干限制。它只适合一些简单任务，不适用于需要较强灵活性或高级特性的复杂场景。随着时间推移，人们发现了多种从 chroot 环境中逃逸的方法，这使得它并非保护服务安全的理想方案。

jail 在多个方面改进了传统 chroot 环境的概念。

在传统 chroot 环境中，进程仅在文件系统的可访问范围内受限。而系统的其他资源、系统用户、运行中的进程以及网络子系统，则由 chroot 进程与宿主系统进程共享。jail 扩展了这一模型，虚拟化了对文件系统、用户集合和网络子系统的访问。它提供了更细粒度的控制，用于调整 jail 环境的访问权限。jail 可视为操作系统层级的虚拟化技术。

本章内容包括：

* jail 是什么，以及它在 FreeBSD 安装中的用途；
* 不同类型的 jail；
* 配置 jail 网络的不同方法；
* jail 配置文件；
* 如何创建不同类型的 jail；
* 如何为 jail 配置网络地址转换；
* 如何启动、停止和重启 jail；
* 从 jail 内部和外部管理 jail 的基础知识；
* 如何升级不同类型的 jail；
* 如何限制 jail 可使用的资源；
* 每个 jail 的额外安全和功能选项；
* 如何将 ZFS 数据集委托给 jail；
* 不同 FreeBSD jail 管理器的不完全列表。
