0

0

Linux上的chroot命令:如何在隔离的空间中运行和测试应用程序

PHPz

PHPz

发布时间:2024-02-12 12:12:03

|

1552人浏览过

|

来源于良许Linux教程网

转载

如果你是一个linux爱好者,你可能经常需要在你的系统上安装或卸载各种应用程序或服务。但是,你是否知道每个应用程序或服务都依赖于一些共享的对象文件,这些文件是其他软件包提供的?如果这些对象文件缺失或损坏,你的应用程序或服务可能无法正常工作,甚至无法启动。因此,了解如何在隔离的空间中运行和测试应用程序或服务是一个非常有用的技能,可以帮助你维护和优化你的linux系统。本文将介绍一个强大的命令行工具,叫做chroot,它可以让你在linux上创建一个独立的环境,并在其中运行和测试应用程序或服务。

什么是 Linux 中的 chroot?

让我们详细探讨chroot,了解其好处、使用场景,如何在Linux系统上设置它,以及如果需要的话,如何跳出(chroot)环境。

chroot 就是 change-root,可以说是最简单和古老的容器化软件之一,它允许用户安全地将应用程序和服务隔离。在计算术语中,隔离是将程序限制在一个受限空间内,具有预定义的资源。

如果您熟悉 Docker 及其工作原理,您可以将 chroot 视为其大幅简化的版本。chroot 通过更改程序的根目录,限制访问和可见性,从而提供了额外的隔离和安全层级。

基本上,您创建一个单独的目录,将所有程序的依赖项复制到新目录中,然后运行chroot命令。这使得程序能够正常运行,同时无法访问基本文件系统。

将程序设置为 chroot 环境是一种在安全空间中测试其可靠性的好方法,而不会改变实际系统的文件。此外,在 chroot 环境中,您还可以减少受到受损软件包引起的安全风险,因为在 chroot 环境中,受损的软件包将无法访问和修改敏感系统文件。

程序只能访问和查看导入到 chroot 目录中的文件,也被称为”chroot监狱”。这样可以防止程序及其子进程干扰基本系统的运行。

什么是chroot监狱?

一个 chroot 监狱是一个隔离的环境,其中运行和执行chroot程序。chroot 监狱这个术语源自这样一个概念:chroot 环境内的进程及其子进程无法访问或查看基本文件系统,并且受限于chroot所预定的资源。

现在你对 chroot 的概念有了清楚的了解,让我们动手实践,学习如何创建一个 chroot 监狱并在其中执行程序。

如何创建 chroot 监狱并在其中执行程序

chroot 监狱(chroot jail)实质上是一个目录,其中包含了程序正常运行所需的所有资源、文件、二进制文件和其他依赖项。

然而,与常规的 Linux 环境不同,chroot监狱的环境受到严格限制,程序无法访问外部或额外的文件和系统资源。

例如,要在 chroot 监狱中运行 Bash shell,你需要将 Bash 二进制文件及其所有依赖项复制到chroot目录中。

问小白
问小白

免费使用DeepSeek满血版

下载

下面是创建 chroot 监狱并生成 Bash shell 的步骤:

1、要成功运行一个程序,你需要将它的所有依赖项复制到 chroot 监狱的目录中。让我们使用 which 和 ldd 命令找到二进制文件(在本例中为Bash)及其所有依赖项的位置:

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ which bash
/usr/bin/bash
                                                                           
┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ ldd /usr/bin/bash
Linux上的chroot命令:如何在隔离的空间中运行和测试应用程序

2、现在你知道了二进制文件和其依赖项的位置,将它们复制到你想要转换为 chroot 监狱的目录中。使用 mkdir 命令创建必要的目录,并使用 cp命令将所有文件复制到相应的目录中:

mkdir bin lib lib64 && cp -r /lib/ * ./lib && cp -r /lib64/* ./lib64/ && cp /bin/bash /bin/
Linux上的chroot命令:如何在隔离的空间中运行和测试应用程序

3、最后,当程序和它的依赖项复制完成后,你可以使用 sudo 前缀以提升的权限运行 chroot 命令,在所选择的目录中生成 chroot 环境。默认情况下,它将生成一个Bash shell。下面是要输入的命令:

linuxmi@linuxmi:~$ sudo chroot www.linuxmi.com
Linux上的chroot命令:如何在隔离的空间中运行和测试应用程序

这就是生成chroot监狱并在其中运行程序的所有步骤。

如何逃离chroot监狱

虽然 chroot 监狱对于测试不稳定的软件很有用,但在处理 SSH 连接时也很有用,因为将连接的用户设置为 chroot 环境是保护 SSH 服务器的众多方法之一。

另一方面,如果你是一名渗透测试人员,并且已登录到目标的 SSH 服务器,发现它是一个 chroot 环境,可能会感到沮丧,感觉走投无路。

然而,有很多方法可以逃离错误配置的 chroot 狱,有些方法需要 C 编程技巧,而其他方法可以使用工具自动化。一些简单的 chroot 逃逸方法包括:

  • 嵌套的 chroot 调用
  • 带有保存的文件描述符的嵌套 chroot 调用
  • 根目录挂载方法
  • procfs 逃逸
  • ptrace 逃逸

请注意,要使用这些方法之一进行 chroot 逃逸,你需要在系统中具有升级的特权。通过访问 chw00t 的 GitHub 存储库,你可以了解更多关于这些逃逸方法的信息,那是一个 chroot 逃逸自动化工具。

现在你应该对 Linux 中的 chroot 了如指掌了

通过本文的介绍,我们了解了chroot是什么、它是如何工作的以及如何实现它,我们还学习了如何创建chroot监狱并在其中执行应用程序或服务,以及如何逃离chroot监狱。chroot是一个简单而强大的工具,可以让你在安全和隔离的空间中运行和测试应用程序或服务。请记住,chroot并不是一个完美的安全解决方案,它有一些局限性和缺陷,因此你应该谨慎地使用它,并结合其他的沙盒或虚拟化技术来提高你的系统的安全性和稳定性。

相关专题

更多
github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

7

2026.01.21

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

252

2023.07.24

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

495

2024.04.08

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

400

2024.04.08

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

438

2024.04.08

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1350

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

704

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

294

2023.06.30

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

7

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.5万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号