天天看點

Chroot改變世界

什麼是Chroot?

chroot,即 change root directory (更改 root 目錄)。在 linux 系統中,系統預設的目錄結構都是以 `/`,即是以根 (root) 開始的。而在使用 chroot 之後,系統的目錄結構将以指定的位置作為 `/` 位置。

為什麼使用Chroot?

在經過 chroot 之後,系統讀取到的目錄和檔案将不在是舊系統根下的而是新根下(即被指定的新的位置)的目錄結構和檔案,是以它帶來的好處大緻有以下3個:

1.增加了系統的安全性,限制了使用者的權力;

在經過 chroot 之後,在新根下将通路不到舊系統的根目錄結構和檔案,這樣就增強了系統的安全性。這個一般是在登入 (login) 前使用 chroot,以此達到使用者不能通路一些特定的檔案。

2.建立一個與原系統隔離的系統目錄結構,友善使用者的開發;

使用 chroot 後,系統讀取的是新根下的目錄和檔案,這是一個與原系統根下檔案不相關的目錄結構。在這個新的環境中,可以用來測試軟體的靜态編譯以及一些與系統不相關的獨立開發。

Chroot使用
1.建立個Chroot後的根目錄.
mkdir /var/chroot
 
2.使用jail+chroot模式,編譯安裝jail.
從http://www.jmcresearch.com/static/dwn/projects/jail/jail.tar.gz可以下載下傳到jail的最新版本,它是由位于http://www.jmcresearch.com/projects/jail/的jail chroot項目小組開發的。該軟體包包含了幫助自動建立chroot"監牢"的C程式、Perl程式和Bash腳本。
 
首先将jail.tar.gz置于任意目錄,然後執行指令:
tar xzf jail.tar.gz && cd jail/src
按照個人實際情況修改makefile檔案,尤其是安裝路徑(預設安裝路徑是/tmp/jail)、體系結構(jail支援Linux、FreeBSD、IRIX和Solaris),以及編譯選項等。最後執行指令:
make && make install
3.使用jail的Per程式腳本建立Chroot環境
/tmp/jail/mkjailenv /var/chroot
jail軟體包提供了幾個Perl腳本作為其核心指令,包括mkjailenv、addjailuser和 addjailsw。如addjailsw會從真實檔案系統中拷貝二進制可執行檔案及其相關的其它檔案(包括庫檔案、輔助性檔案和裝置檔案)到該"監牢" 中。
 
4.為chroot環境增加常用指令,例如:ls、cat、cp 等
/usr/local/bin/addjailsw /var/chroot
 
備注:如果是Centos 7 的童鞋請安裝下這個軟體不然以上指令會報錯strace
 
5.這時候還進不去chroot環境,因為沒有bash,需要拷貝本地bash到chroot環境
ldd /bin/bash
    linux-vdso.so.1 => (0x00007ffdbd3e5000)
    libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f23337da000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f23335d6000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f2333214000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f2333a0a000)
cd /var/chroot/
cp /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} ./lib64/
cp /bin/bash ./bin
 
------------------------華麗的分割線----------------------------------
 
如何在chroot環境中使用Yum
 
1.建立rpm目錄
mkdir –p /var/chroot/var/lib/rpm
 
2.指定rpm rebuild 目錄
rpm --rebuilddb --root=/var/chroot
 
3.下載下傳Centos7 yum源
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/centos-release-7-2.1511.el7.centos.2.10.x86_64.rpm
 
4.安裝Centos7 yum源
rpm -ivh --root=/var/chroot --nodepscentos-release-7-2.1511.el7.centos.2.10.x86_64.rpm
 
5.往chroot環境裡面安裝yum
yum --installroot=/var/chroot install -y rpm-build yum
 
6.拷貝本機解析檔案到chroot環境
cp /etc/resolv.conf /var/chroot/etc/
 
7.進入chroot環境
chroot /var/tmp/chroot /bin/bash –l      
上一篇: 了解 chroot

繼續閱讀