加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

linux chroot 命令

发布时间:2020-12-14 15:31:48 所属栏目:百科 来源:网络整理
导读:$ rootfs $ (docker export $(docker create busybox) | -C rootfs -xvf -) $ rootfs $ rootfs /bin/ $ rootfs /bin/ $ rootfs $ rootfs /bin/ $ pid=$( -s - /proc/$pid/root #include span style="color: #0000ff"int main(span style="color: #0000ff"int

$ rootfs

$ (docker export $(docker create busybox) | -C rootfs -xvf -)

$ rootfs

$ rootfs /bin/

$ rootfs /bin/

$ rootfs

$ rootfs /bin/

$ pid=$( -s - /proc/$pid/root

#include

<span style="color: #0000ff">int main(<span style="color: #0000ff">int argc,<span style="color: #0000ff">char *<span style="color: #000000">argv[])
{
<span style="color: #0000ff">if(argc<<span style="color: #800080">2<span style="color: #000000">){
printf(<span style="color: #800000">"<span style="color: #800000">Usage: chroot NEWROOT [COMMAND...] n<span style="color: #800000">"<span style="color: #000000">);
return <span style="color: #800080">1<span style="color: #000000">;
}

</span><span style="color: #0000ff"&gt;if</span>(<span style="color: #0000ff"&gt;chroot</span>(argv[<span style="color: #800080"&gt;1</span><span style="color: #000000"&gt;])) {
    perror(</span><span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;chroot</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;);
    return </span><span style="color: #800080"&gt;1</span><span style="color: #000000"&gt;;
}

</span><span style="color: #0000ff"&gt;if</span>(chdir(<span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;/</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;)) {
    perror(</span><span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;chdir</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;);
    return </span><span style="color: #800080"&gt;1</span><span style="color: #000000"&gt;;
}

</span><span style="color: #0000ff"&gt;if</span>(argc == <span style="color: #800080"&gt;2</span><span style="color: #000000"&gt;) {
    </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; hardcode /bin/sh for my busybox tools.</span>
    argv[<span style="color: #800080"&gt;0</span>] = (<span style="color: #0000ff"&gt;char</span> *)<span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;/bin/sh</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;;

    argv[</span><span style="color: #800080"&gt;1</span>] = (<span style="color: #0000ff"&gt;char</span> *) <span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;-i</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;;
    argv[</span><span style="color: #800080"&gt;2</span>] =<span style="color: #000000"&gt; NULL;
} </span><span style="color: #0000ff"&gt;else</span><span style="color: #000000"&gt; {
    argv </span>+= <span style="color: #800080"&gt;2</span><span style="color: #000000"&gt;;
}

execvp (argv[</span><span style="color: #800080"&gt;0</span><span style="color: #000000"&gt;],argv);
printf(</span><span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;chroot: cannot run command `%s`n</span><span style="color: #800000"&gt;"</span>,*<span style="color: #000000"&gt;argv);

return </span><span style="color: #800080"&gt;0</span><span style="color: #000000"&gt;;

}

$ -Wall mychroot.c -o mychroot

$ ./mychroot ./rootfs

argv[] = ( *);

找到以 "linux16 /vmlinuz-" 开头的行。如果默认没有看到该行,需要按向下键把它滚动出来。然后定位到该行结尾处,输入一个空格和字符串 "rd.break",如下图所示:

接着按下 ctrl + x 以该设置继续启动,启动过程中操作系统会停下来,这是系统启动过程中的一个非常早的时间点:

/dev/mapper/centos-root on /sysroot type xfs (ro,relatime,attr2,inode64,noquota)

/dev/mapper/centos-root on / type xfs (rw,seclabel,noquota)

switch_root:/# -o remount,rw /sysroot

switch_root:/# /sysroot

用下面的命令为 root 用户设置新的密码:

-# | --stdin root

接下来还要处理 SELinux 相关的问题。由于当前的环境中 SELinux 并未启动,所以我们对文件的修改可能造成文件的 context 不正确。为了确保开机时重新设定 SELinux context,必須在根目录下添加隐藏文件 .autorelabel:

-# /.autorelabel

-/# reboot

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读