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/

發佈了23 篇原創文章 · 獲贊 2 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章