Linux中chroot命令的实用教程
有时,您可能需要将一个进程与系统上运行的其他进程隔离。
我们可以在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
系统可能会提示您输入用户密码以继续。
在这种情况下,输入您的用户密码,命令将被执行。