什么是chroot jail以及如何使用它(详细指南)

chroot jail用法指南介绍如何使用chroot jail?chroot jail这个词的历史可以追溯到 1992 年,并且在今天经常使用。但是这个术语是什么意思,这个操作是做什么用的?
在本教程中,我们将介绍使用 chroot jails 的基础知识,并向你展示如何设置它,并且包含相关的chroot jail用法示例。
先决条件

  • 运行 Linux 或 Unix 操作系统的系统
  • 具有 sudo 级别权限的用户帐户
  • 访问终端/命令行
什么是 chroot jail?chroot (change root的缩写)是一种Unix操作,它将表面根目录更改为用户指定的根目录。
你在 chroot 操作之后运行的任何进程都只能访问新定义的根目录及其子目录。此操作通俗地称为chroot jail,因为这些进程无法在新的根目录之外读取或写入。
chroot jail 用于什么?
Chroot jail用于为进程运行创建一个有限的沙箱。这意味着进程不能恶意更改规定目录树之外的数据。
chroot jails 的另一个用途是作为虚拟机的替代品。这种方法称为内核级虚拟化,需要的资源比虚拟机少。此操作允许用户在同一系统上创建多个隔离的实例。
如何使用chroot jail?【什么是chroot jail以及如何使用它(详细指南)】chroot jail用法指南:此示例将带你创建和设置 chroot jail,以便它可以运行bashls命令。
按着这些次序:
1. 创建一个名为chroot_jail的新目录:
mkdir chroot_jail

如果我们尝试chroot进入新目录,我们会得到以下输出:
什么是chroot jail以及如何使用它(详细指南)

文章图片
你必须先启用该bash命令,然后才能chroot进入新目录。这需要将命令文件和所有关联的库复制到新的根目录中。
2. chroot jail用法示例 - 在chroot_jail 中创建一个新的子目录树:
mkdir -p chroot_jail/bin chroot_jail/lib64/x86_64-linux-gnu chroot_jail/lib/x86_64-linux-gnu

这些子目录将存储bashls命令的所有必要元素。
3. 将cp命令与命令一起使用which让复制bash  和ls命令,而无需指定要从中复制的路径。
为此,请使用:
cp $(which ls) chroot_jail/bin/ cp $(which bash) chroot_jail/bin/

注意:如果你的bashor命令是 aliased,你需要在复制之前取消它们的别名。使用,其中是要取消别名的命令的名称。ls  unalias [command][command]
4. 如何使用chroot jail?bashls在新的根文件夹的工作,加上所有相关的库chroot_jail /库。使用ldd命令找出哪些库与哪个命令相关联:
ldd $(which bash) ldd $(which ls)

什么是chroot jail以及如何使用它(详细指南)

文章图片
5. 将适当的库复制到chroot_jail子目录lib和lib64。
对于bash命令:
cp /lib/x86_64-linux-gnu/libtinfo.so.6 chroot_jail/lib/x86_64-linux-gnu/ cp /lib/x86_64-linux-gnu/libdl.so.2 chroot_jail/lib/x86_64-linux-gnu/ cp /lib/x86_64-linux-gnu/libc.so.6 chroot_jail/lib/x86_64-linux-gnu/ cp /lib64/ld-linux-x86-64.so.2 chroot_jail/lib64/

对于ls命令:
cp /lib/x86_64-linux-gnu/libselinux.so.1 chroot_jail/lib/x86_64-linux-gnu/ cp /lib/x86_64-linux-gnu/libc.so.6 chroot_jail/lib/x86_64-linux-gnu/ cp /lib/x86_64-linux-gnu/libpcre2-8.so.0 chroot_jail/lib/x86_64-linux-gnu/ cp /lib/x86_64-linux-gnu/libdl.so.2 chroot_jail/lib/x86_64-linux-gnu/ cp /lib64/ld-linux-x86-64.so.2 chroot_jail/lib64/ cp /lib/x86_64-linux-gnu/libpthread.so.0 chroot_jail/lib/x86_64-linux-gnu/

6、chroot jail用法示例 - 使用chroot命令将root改为chroot_jail目录:
sudo chroot chroot_jail

什么是chroot jail以及如何使用它(详细指南)

文章图片
注意:将根目录更改为chroot_jail目录会启动一个新的bashshell实例。
使用ls命令列出新根目录树中的所有文件和目录:
ls -R

什么是chroot jail以及如何使用它(详细指南)

文章图片
7. 使用完新的根文件夹后,退出 shell:
exit

chroot jail用法指南总结如何使用chroot jail?遵循本教程后,你应该能够设置 chroot jail,以及在新根目录中运行进程和命令所需的资源。
有关 Linux 命令的更多信息,请查看我们的Linux 命令备忘单。

    推荐阅读