大佬教程收集整理的这篇文章主要介绍了linux chroot 命令,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
即 Change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以 /,即以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为 / 位置。
考本文的 demo。
在经过 chroot 之后,在新根下将访问不到旧系统的根目录结构和文件,这样就增强了系统的安全性。一般会在用户登录前应用 chroot,把用户的访问能力控制在一定的范围之内。
便用户的开发:
并执行真正的 init,本文的最后一个 demo 会详细的介绍这种用法。
title="linux chroot 命令" alt="linux chroot 命令" src="https://cn.js-code.com/res/2019/02-09/09/fe2b624e7af5914178595561e0b54429.png" >
title="linux chroot 命令" alt="linux chroot 命令" src="https://cn.js-code.com/res/2019/02-09/09/9f16412d0403b05a3468e1d462027d63.png" >
虽然输出结果与刚才执行的 ls rootfs 命令形同,但是这次运行的命令却是 rootfs/bin/ls。
title="linux chroot 命令" alt="linux chroot 命令" src="https://cn.js-code.com/res/2019/02-09/09/c8c925cea27fd66b54190342f64591ba.png" >
title="linux chroot 命令" alt="linux chroot 命令" src="https://cn.js-code.com/res/2019/02-09/09/66b36cb0c17a343e577528aef6591812.png" >
命令为什么会找 bash 命令呢? 原来,如果不给 chroot 指定执行的命令,默认它会执行 '${SHelL} -i',而我的系统中 ${SHelL} 为 /bin/bash。Hell 了。
title="linux chroot 命令" alt="linux chroot 命令" src="https://cn.js-code.com/res/2019/02-09/09/4db58604030f17beb722092e4e0a9bda.png" >
没有问题的,并且我们打印出了当前进程的 PID。
虽然我们做了好几个实验,但是肯定会有朋友心存疑问,怎么能证明我们运行的命令就是在 chroot 目录后的路径中呢?Hell 中执行):
title="linux chroot 命令" alt="linux chroot 命令" src="https://cn.js-code.com/res/2019/02-09/09/93d668db608c9bd60d1ca39e0cac5820.png" >
<span style="color: #0000ff">int
</span><span style="color: #0000ff">if</span>(<span style="color: #0000ff">chroot</span>(argv[<span style="color: #800080">1</span><span style="color: #000000">])) {
perror(</span><span style="color: #800000">"</span><span style="color: #800000">chroot</span><span style="color: #800000">"</span><span style="color: #000000">);
return </span><span style="color: #800080">1</span><span style="color: #000000">;
}
</span><span style="color: #0000ff">if</span>(chdir(<span style="color: #800000">"</span><span style="color: #800000">/</span><span style="color: #800000">"</span><span style="color: #000000">)) {
perror(</span><span style="color: #800000">"</span><span style="color: #800000">chdir</span><span style="color: #800000">"</span><span style="color: #000000">);
return </span><span style="color: #800080">1</span><span style="color: #000000">;
}
</span><span style="color: #0000ff">if</span>(argc == <span style="color: #800080">2</span><span style="color: #000000">) {
</span><span style="color: #008000">//</span><span style="color: #008000"> hardcode /bin/sh for my busybox tools.</span>
argv[<span style="color: #800080">0</span>] = (<span style="color: #0000ff">char</span> *)<span style="color: #800000">"</span><span style="color: #800000">/bin/sh</span><span style="color: #800000">"</span><span style="color: #000000">;
argv[</span><span style="color: #800080">1</span>] = (<span style="color: #0000ff">char</span> *) <span style="color: #800000">"</span><span style="color: #800000">-i</span><span style="color: #800000">"</span><span style="color: #000000">;
argv[</span><span style="color: #800080">2</span>] =<span style="color: #000000"> NULL;
} </span><span style="color: #0000ff">else</span><span style="color: #000000"> {
argv </span>+= <span style="color: #800080">2</span><span style="color: #000000">;
}
execvp (argv[</span><span style="color: #800080">0</span><span style="color: #000000">],argv);
printf(</span><span style="color: #800000">"</span><span style="color: #800000">chroot: cAnnot run command `%s`\n</span><span style="color: #800000">"</span>,*<span style="color: #000000">argv);
return </span><span style="color: #800080">0</span><span style="color: #000000">;
}
并执行下面的命令进行编译:
title="linux chroot 命令" alt="linux chroot 命令" src="https://cn.js-code.com/res/2019/02-09/09/e4da649769604eb26080ac4c8a1d5f80.png" >
Hell:
该怎么办?接下来的 demo 将演示如何通过 chroot 命令重新设置 centos7 中被忘记了的 root 密码。.break" 参数,从而让系统在启动的早期停下来,此时我们可以通过使用 root 权限并结合 chroot 命令完成设置 root 密码的操作。下面我们一起来看具体的操作过程。
title="linux chroot 命令" alt="linux chroot 命令" src="https://cn.js-code.com/res/2019/02-09/09/88bd0f99da1a318a8a25bfeb7dc11a56.png" >
title="linux chroot 命令" alt="linux chroot 命令" src="https://cn.js-code.com/res/2019/02-09/09/97ad092e7d70c409ad7397856c0dc5c8.png" >
找到以 "linux16 /vmlinuz-" 开头的行。如果默认没有看到该行,需要按向下键把它滚动出来。然后定位到该行结尾处,输入一个空格和字符串 "rd.break",如下图所示:
title="linux chroot 命令" alt="linux chroot 命令" src="https://cn.js-code.com/res/2019/02-09/09/899c0ff73265b7211da580ce763644f6.png" >
接着按下 ctrl + x 以该设置继续启动,启动过程中操作系统会停下来,这是系统启动过程中的一个非常早的时间点:
title="linux chroot 命令" alt="linux chroot 命令" src="https://cn.js-code.com/res/2019/02-09/09/99ffe8708d78965881a7e8a6944113ed.png" >
title="linux chroot 命令" alt="linux chroot 命令" src="https://cn.js-code.com/res/2019/02-09/09/1b1bb3f9e875b2e6397054fc83494e55.png" >
用下面的命令为 root 用户设置新的密码:
接下来还要处理 SELinux 相关的问题。由于当前的环境中 SELinux 并未启动,所以我们对文件的修改可能造成文件的 context 不正确。为了确保开机时重新设定 SELinux context,必須在根目录下添加隐藏文件 .autorelabel:
很有意思的命令,我们可以用它来简单的实现文件系统的隔离。但在一个容器技术繁荣的时代,用 chroot 来进行资源的隔离实在是 low 了点。所以 chroot 的主要用途还是集中在系统救援、维护等一些特殊的场景中。
以上是大佬教程为你收集整理的linux chroot 命令全部内容,希望文章能够帮你解决linux chroot 命令所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。