Linux中chroot命令的实用教程

时间:2020-02-23 14:37:49  来源:igfitidea点击:

有时,您可能需要将一个进程与系统上运行的其他进程隔离。
我们可以在Linux中使用chroot命令来做到这一点。

在本教程中,我们将向您展示chroot命令是什么,以及如何使用该命令创建chroot监狱并在隔离的环境中捕获用户或者组。

了解Linux中的chroot命令

chroot命令在Linux系统中是必不可少的。
它可帮助您更改进程及其子进程的根目录。
当我们为用户或者组创建伪根目录时,它将失去对真实根目录的访问权限。

因此,用户或者组现在与我们系统的其余部分隔离了。
这可以有很多用途,例如:

  • 创建用于软件开发和测试的测试环境。

  • 在系统上初始化Bootloader文件的重新安装

  • 运行可能已损坏的软件

  • 使用环网机制增强安全性

chroot命令实际上创建了一个虚拟环境。
它的功能类似于虚拟机,但不需要您为chroot监狱投入专用资源。

虚拟环境与主机系统共享所有内核。

chroot命令的语法

Linux中的chroot命令具有以下语法。

chroot [-OPTION] [PATH FOR NEW ROOT] [PATH FOR SERVER]

运行chroot命令所需的唯一参数是新根目录的路径。
但是,您可以使用chroot命令中可用的选项来获得所需的结果。

在Linux中使用chroot命令时,可以使用以下选项。

  • –userspec = USER [:GROUP] –用于定义希望使用chroot命令的用户或者组。
    我们可以按名称或者ID指定要使用的组或者用户
  • –groups = G_List –用于指定我们希望用作G1,G2…Gn的补充组
  • —帮助–向您显示帮助屏幕并退出
  • –version –显示版本数据并退出

创建一个chroot命令监狱

现在,我们了解了chroot命令及其语法,是时候使用它了。
为了向您展示如何完成,我们将创建一个chroot监狱。

chroot监狱是通过将用户或者组的根目录更改为新目录而创建的虚拟环境。
这个新目录用作chroot监狱的假根目录。

我们来看一下在Linux中使用chroot命令创建chroot监狱所需的步骤。

1.创建目录

首先,我们将使用mkdir命令在/home/chroot_jail创建一个伪造的根目录。

mkdir $home/chroot_jail

这将在给定地址创建一个目录,该目录将用于chroot监狱。
但是,在让chroot命令执行其工作之前,我们需要将所需文件添加到新目录中。

2.添加所需的根目录

我们将从在jail目录中创建/bin,/lib和/lib64开始。
下面给出了创建这些目录的命令。

mkdir -p $home/chroot_jail/{bin,lib,lib64}

您会注意到,我们在虚拟环境中创建的目录以大括号('{}')指定。

现在,我们将使用cd命令将chroot_jail设为新的根目录。

cd $home/chroot_jail

3.移动允许的命令二进制文件

我们为此示例制作了一个简约的Linux环境。
让我们使用bash,ls,rm和touch命令作为虚拟环境功能的一部分。

将二进制文件从根目录/bin复制到chroot_jail的/bin目录。
我们使用带有-v(详细)标记的cp命令来执行此操作,因此我们可以看到在给定时刻正在复制的内容。

cp -v /bin/{bash,touch,ls,rm} $home/chroot_jail

克卢特监狱

如您所见,括号中提到了我们要复制的二进制文件。
来自给定二进制文件的文件现在已复制到我们的新chroot jail目录中。

4.解决命令依赖性

但是这些二进制文件将具有依赖性。
bash的依赖项可以使用ldd命令找到。

ldd /bin/bash

Chroot监狱目录

现在,我们将使用cp命令将目录仔细地一个一个地复制到chroot监狱。
我们应该确保复制所有依赖库,否则我们的chroot监狱将无法正常工作。
用逗号分隔的目录替换<listdepend here here>部分。

cp -v {<List dependencies here>} $home/chroot_jail/lib64

对于要在chroot监狱中允许的所有命令,我们将重复这些步骤。
查找依赖项库,并将其复制到chroot_jail目录。

5.切换到新的根目录

现在,我们要做的就是将chroot监狱的根目录更改为我们刚刚创建的新伪目录。

要更改目录并指定bash作为应用程序运行,并作为虚拟环境的shell程序运行,我们使用以下命令。

sudo chroot $home/chroot_jail/bin/bash

系统可能会提示您输入用户密码以继续。
在这种情况下,输入您的用户密码,命令将被执行。