千家信息网

Linux系统chroot命令该如何使用

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章给大家分享的是有关Linux系统chroot命令该如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。chroot简介:chr
千家信息网最后更新 2026年11月01日Linux系统chroot命令该如何使用

本篇文章给大家分享的是有关Linux系统chroot命令该如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

chroot简介:

  • chroot,既是Linux的一条命令,也是它的一个系统调用。

  • chroot的作用就是就是改变当前环境的根目录到一个文件夹,这个文件夹之外的东西,

  • 对于当前环境都是不可见的。

  • 因此若是运行不信任的代码或程序,使用chroot作为一个安全沙箱是个很好的选择。

为何使用 chroot

在经过 chroot 之后,系统读取到的目录和文件将不在是旧系统根下的而是新根下(即被指定的新的位置)的目录结构和文件,因此它带来的好处大致有以下3个:

  1. 增加了系统的安全性,限制了用户的权力;

    在经过 chroot 之后,在新根下将访问不到旧系统的根目录结构和文件,这样就增强了系统的安全性。这个一般是在登录 (login) 前使用 chroot,以此达到用户不能访问一些特定的文件。

  2. 建立一个与原系统隔离的系统目录结构,方便用户的开发;

    使用 chroot 后,系统读取的是新根下的目录和文件,这是一个与原系统根下文件不相关的目录结构。在这个新的环境中,可以用来测试软件的静态编译以及一些与系统不相关的独立开发。

  3. 切换系统的根目录位置,引导 Linux 系统启动以及急救系统等。

    chroot 的作用就是切换系统的根位置,而这个作用最为明显的是在系统初始引导磁盘的处理过程中使用,从初始 RAM 磁盘 (initrd) 切换系统的根位置并执行真正的 init。另外,当系统出现一些问题时,我们也可以使用 chroot 来切换到一个临时的系统。

chroot 的使用

为了更好的理解 chroot 发挥的作用,我们将尝试指定一个特定的位置进行根目录切换。但是由于在经过 chroot 之后,系统读取到的 bin/ 等与系统相关目录将不再是旧系统根目录下的,而是切换后新根下的目录结构和文件,因此我们有必要准备一些目录结构以及必要的文件。

清单 1. 准备切换的目录结构

busybox

Busybox 被称为是嵌入式 Linux 中的瑞士军刀。Busybox 包含了许多有用的命令,如 cat、find 等,但是它的体积却非常的小。

 $ pwd /home/wstone/Build/work $ tree . . |-- bin | |-- ash -> busybox | |-- bash | `-- busybox |-- etc `-- newhome

这里使用了静态编译后的 busybox 来提供必要的命令,使用静态编译仅是为了避免动态库文件的拷贝。当然我们也可以拷贝旧系统的下的命令到新的目录结构中使用,但是那些命令通常是动态编译的,这就意味着我们不得不拷贝相关的动态库文件到相应的目录结构中。同时这里的 bash 也非真正的 Bourne Again shell,而是一个执行 ash 的 shell 脚本。在清单 2中,展示了位于旧系统中的 chroot 命令的使用。需要注意的是在使用 chroot 时,要求拥有相关的操作权限。

清单 2. 位于系统中的 chroot 的使用

 mount /dev/hda1 /new-root cd /new-root pivot_root . old-root exec chroot . /sbin/initdev/console 2>&1 umount /old-root

我们可以看到当前路径(/home/wstone/Build/work/),在经过 chroot 后转变成了 / 目录,同时从新根下读取了与系统相关的目录结构。使用 ls 命令失败是由于我们创建的测试目录结构中并没有包含命令 ls,但是我们成功的使用了 busybox 中的 ls。以上看到的只是 chroot 的一种使用方式,其实标准的 chroot (Coreutils – GNU core utilities 提供的 chroot)使用方式有2种:

清单 3. 标准 chroot 的2种使用方式

 chroot NEWROOT [COMMAND...]  chroot OPTION

刚才我们使用的是方式[2]。这将在没有给定环境时,默认执行 /bin/sh,但是当给定环境后,将运行 ${SHELL} –i,即与环境相同的可交互的 shell。我们的目录结构中并没有包含sh,显然清单 2中的 chroot 运行了 ${SHELL} –i。当然我们也可以在进行切换时指定需要的命令,即使用方式[1]。

清单 4. chroot 另一种方式的使用

 # chroot . /bin/ash #

在清单 4 中,尝试了在经过 chroot 后,执行新目录结构下的 ash shell。不得不说的是,如果新根下的目录结构和文件准备的够充分,那么一个新的简单的 Linux 系统就可以使用了。其实更为常见的是在初始 RAM 磁盘 (initrd)中使用 chroot,以此来执行系统的 init。清单 5 中,展示的是在 Linux 2.4 内核 initrd 中使用 chroot。

清单 5. 在 Linux 2.4 内核 initrd 中使用 chroot 的示例

 mount /dev/hda1 /new-root cd /new-root pivot_root . old-root exec chroot . /sbin/initdev/console 2>&1 umount /old-root

由于 Linux 内核的升级,initrd 处理机制和格式发生了变化,在 Linux 2.6 内核 initrd 中不能再使用 pivot_root,因此一般也不再使用 chroot,而是选择使用 busybox 提供的 switch_root 或者 klibc 提供的 run-init 进行根目录的切换。(这并不是说不能在 Linux 2.6内核 initrd 中使用 chroot,选择 switch_root 或 run-init 仅是出于习惯和方便的考虑。)但是实质上,它们仅是将 chroot 的功能进行了封装,以此更加方便简单的切换根目录。

清单 6. 在 Linux 2.6 内核 initrd 中 chroot 的使用

 find -xdev / -exec rm '{}' '; cd /newmount; mount --move . /; chroot .

switch_root 和 run-init 完成了类似清单 6中的功能,删除 rootfs 的全部内容以释放空间,以及挂载新的根文件系统并进行切换。在 busybox 和 klibc中也有提供 chroot 命令,只是功能上与 Coreutils (GNU core utilities) 包含的 chroot 有稍许差异。

什么是Linux系统

Linux是一种免费使用和自由传播的类UNIX操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统,使用Linux能运行主要的Unix工具软件、应用程序和网络协议。

以上就是Linux系统chroot命令该如何使用,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

系统 目录 结构 命令 文件 清单 切换 根目录 内核 方式 环境 位置 是在 作用 就是 用户 而是 编译 运行 安全 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网佳科技有限公司 中国互联网科技工作委员会毛军 科技互联网项目 中资互联网科技 互联网络科技有限公司 北京互联网科技公司 互联网 科技创新 广州宏创互联网科技 时间互联网络科技 现代科技和互联网有关系吗 昊天互联网科技有限公司 注册互联网科技公司经营范围大全 保险科技服务互联网营销体系 兰石爱特工业互联网科技分公司 北京军民互联网科技公司 广西泛欧互联网科技有限公司 互联网科技大会大佬 杭州科技互联网公司有哪些 黑龙江互联网科技公司 伍佰万互联网科技是干嘛的 易互联网科技有限公司 互联网 科技创业 联恩商钥互联网科技有限公司 赶超互联网科技 微信多开 互联网媒体平台算高科技产业 互联网科技资金流入 互联网科技包装股份有限公司上市 美国五大互联网科技公司市值多少 长沙易易互联网科技有限公司 互联网科技创新方面的资料
0