chroot的使用方法

NAME
       chroot - run command or interactive shell with special root directory

SYNOPSIS
       chroot NEWROOT [COMMAND...]
       chroot OPTION

DESCRIPTION
       Run COMMAND with root directory set to NEWROOT.

       If no command is given, run ‘‘${SHELL} -i’’ (default: /bin/sh).

chroot的主要作用是,切换NEWROOT为根目录,然后以NEWROOT为根目录执行COMMAND,假如COMMAND是一个shell,则启动这个shell,在这个shell里,根目录其实就是NEWROOT了。假如没有给定COMMAND,就执行“${SHELL} -i”,默认情况下是/bin/sh。

在测试环境中使用了busyboy工具包,BusyBox 是很多标准 Linux® 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet(不过它的选项比传统的版本要少);有些人将 BusyBox 称为 Linux 工具里的瑞士军刀【1】。

测试目录为:/root/work,在改目录里新建了bin, etc,home三个目录,busybox在bin目录中。

# tree
.
|-- bin
|   `-- busybox
|-- etc
`—home

切换到/root/work/bin目录中,执行下面的命令,新建一个名为指向busybox的名为ash的软链接文件,执行该文件将会执行busybox工具包中的ash,这是一个简单的shell

#ln –s busybox ash

# tree
.
|-- bin
|   |-- ash -> busybox
|   `-- busybox
|-- etc
`—home

执行chroot命令切换当前目录为根目录,同时执行/bin/ash,这个路径是当前路径被设置为根路径情况下的,实际位置就是/root/work/bin/ash

# chroot . /bin/ash

chroot: cannot run command `/bin/ash': Permission denied   //这种情况是因为busybox没有可执行的权限导致的

#chmod u+x bin/busybox          //给busybox增加可执行权限

#chroot . /bin/ash                     //执行成功,切换进入一个新的shell

# pwd                                         //可以看到,在这个新的shell,/root/work已经是根目录了
/

# ls                                             //但我们执行ls,报告没有ls这个文件,在busybox是包含了ls的
/bin/ash: ls: not found

# busybox ls                               //通过这种方法就可以调用busyboy中的ls了,但是执行起来很麻烦
bin   etc   home

# cd bin
# busybox ln -s busybox ln
# ln -s busybox ls
               //新建了ln,ls链接文件,可以直接使用ln和ls命令,可以用相同的办法新建chmod,vi等busybox支持的命令
# ls
ash      busybox  ln       ls

#echo $PATH                   //虽然根目录改了,但是环境变量还是没有变

#exit                           //退出ash

# chroot . /bin/bash
chroot: cannot run command `/bin/bash': No such file or directory

出现上面这种情况,很多人可能会有些疑惑,这是因为执行命令是是在/root/wanghf/bin/中寻找bash可执行文件,而不是在/bin中寻找,COMMAND里面调用的命令必须要在/root/work/bin中找到。

参考文档:

[1]BusyBox 简化嵌入式 Linux 系统 http://www.ibm.com/developerworks/cn/linux/l-busybox/

[2]理解chroot http://www.ibm.com/developerworks/cn/linux/l-cn-chroot/

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值