请选择 进入手机版 | 继续访问电脑版

[LINUX] Linux chroot下令 用法详解

[复制链接]
查看75 | 回复5 | 2021-9-5 02:20:43 | 显示全部楼层 |阅读模式

chroot下令

chroot下令 用来在指定的根目次 下运行指令。chroot,即 change root directory (更改 root 目次 )。在 linux 体系 中,体系 默认的目次 布局 都是以/,即是以根 (root) 开始的。而在使用 chroot 之后,体系 的目次 布局 将以指定的位置作为/位置。

在颠末 chroot 下令 之后,体系 读取到的目次 和文件将不在是旧体系 根下的而是新根下(即被指定的新的位置)的目次 布局 和文件,因此它带来的好处大致有以下3个:

增长 了体系 的安全性,限定 了用户的权利 :

在颠末 chroot 之后,在新根下将访问不到旧体系 的根目次 布局 和文件,如许 就加强 了体系 的安全性。这个一样寻常 是在登录 (login) 前使用 chroot,以此达到用户不能访问一些特定的文件。

建立一个与原体系 隔离的体系 目次 布局 ,方便用户的开辟 :

使用 chroot 后,体系 读取的是新根下的目次 和文件,这是一个与原体系 根下文件不相干 的目次 布局 。在这个新的环境中,可以用来测试软件的静态编译以及一些与体系 不相干 的独立开辟 。

切换体系 的根目次 位置,引导 Linux 体系 启动以及急救体系 等:

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

语法

  1. chroot(选项)(参数)
复制代码

选项

  1. --help:在线帮助; --version:显示版本信息。
复制代码

参数

1.目次 :指定新的根目次 ;

2.指令:指定要实验 的指令。

实例

将target作为根目次 (运行此中 的/bin/sh):

  1. chroot target /bin/sh
复制代码

这里,target是busybox安装好的路径,类似 一个文件体系 包含了很多 工具。如许 ,将会进入一个shell界面,这个shell以target为根。运行exit退出该shell又返回原来的本机环境了,也可以使用 Ctrl+D。

留意 :

1.根用户才行

2.假如 直接chroot target默认探求 target的/bin/bash.这会以target作为根目次

将target作为根目次 (运行此中 的/bin/ls):

  1. chroot target /bin/ls
复制代码

这里,target是busybox安装好的路径,类似 一个文件体系 包含了很多 工具。如许 运行的是target中的ls(不是本机的/bin/ls),然后返回立刻 本机的目次 环境。

留意 ,本身 在本地编译一个程序天生 a.out之后,拷进target/bin/中如许 运行却不行,由于 它包含了动态毗连 的库,必要 用ldd查看a.out必要 那些动态库,将这些库拷贝到新根的对应路径下才能实验 。

用chroot运行本身 编译的一个程序:

准备 chroot的根目次 :

  1. mkdir newRoot
复制代码

编译本身 的程序:

  1. gcc main.c
复制代码

这里main.c天生 a.out,功能是输出hello。

查看程序必要 的库:

  1. ldd a.out
复制代码

输入之后,输出如下:

  1. linux-gate.so.1 = > (0xb8034000)
  2. libc.so.6 = > /lib/tls/i686/cmov/libc.so.6 (0xb7eab000)
  3. /lib/ld-linux.so.2 (0xb801a000)
复制代码

将程序必要 的库和程序拷贝到新根目次 下:

  1. cp a.out newRoot
  2. mkdir newRoot/lib
  3. cp /lib/tls/i686/cmov/libc.so.6 newRoot/lib
  4. cp /lib/ld-linux.so.2 newRoot/lib
复制代码

这里newRoot内容将如下:

  1. a.out lib/
复制代码

使用 chroot运行本身 的程序:

  1. su
  2. chroot newRoot /a.out
复制代码

如许 就可以或许 精确 运行a.out了,由于 a.out使用 到了其他的动态毗连 库,以是 必要 将库拷贝到newRoot中,假如 没有其他库那么直接拷贝a.out就能运行。比方 静态编译后的busybox,其安装目次 中的/bin/busybox就没有依靠 其他库。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

avatar WY20172017 | 2021-9-19 06:45:00 | 显示全部楼层
脑残片admin楼主今天吃了么?
回复

使用道具 举报

avatar 把心掏給珎丶 | 2021-10-2 17:48:48 | 显示全部楼层
十分赞同admin楼主!
回复

使用道具 举报

avatar ffycxyw2274436 | 2021-10-4 20:27:22 | 显示全部楼层
admin楼主今年多大了?
回复

使用道具 举报

强,我和我的小伙伴们都惊呆了!
回复

使用道具 举报

avatar 困虫斗倜 | 1 小时前 | 显示全部楼层
楼上的这是啥态度呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则