chroot簡(jiǎn)介
chroot,即 change root directory (更改 root 目錄)蕊梧。在 linux 系統(tǒng)中压固,系統(tǒng)默認(rèn)的目錄結(jié)構(gòu)都是以 /
,即是以根 (root) 開(kāi)始的秃诵。而在使用 chroot 之后龙致,系統(tǒng)的目錄結(jié)構(gòu)將以指定的位置作為 /
位置。
chroot是在unix系統(tǒng)的一個(gè)操作顷链,針對(duì)正在運(yùn)作的軟件進(jìn)程和它的子進(jìn)程目代,改變它外顯的根目錄。一個(gè)運(yùn)行在這個(gè)環(huán)境下嗤练,經(jīng)由chroot設(shè)置根目錄的程序榛了,它不能夠?qū)@個(gè)指定根目錄之外的文件進(jìn)行訪(fǎng)問(wèn)動(dòng)作,不能讀取煞抬,也不能更改它的內(nèi)容霜大。
由chroot創(chuàng)造出的那個(gè)根目錄,叫做“chroot監(jiān)獄”(chroot jail革答,或chroot prison)战坤。
為何使用 chroot
在經(jīng)過(guò) chroot 之后曙强,系統(tǒng)讀取到的目錄和文件將不在是舊系統(tǒng)根下的而是新根下(即被指定的新的位置)的目錄結(jié)構(gòu)和文件,因此它帶來(lái)的好處大致有以下3個(gè):
- 增加了系統(tǒng)的安全性途茫,限制了用戶(hù)的權(quán)力碟嘴;
在經(jīng)過(guò) chroot 之后,在新根下將訪(fǎng)問(wèn)不到舊系統(tǒng)的根目錄結(jié)構(gòu)和文件囊卜,這樣就增強(qiáng)了系統(tǒng)的安全性娜扇。這個(gè)一般是在登錄 (login) 前使用 chroot,以此達(dá)到用戶(hù)不能訪(fǎng)問(wèn)一些特定的文件栅组。 - 建立一個(gè)與原系統(tǒng)隔離的系統(tǒng)目錄結(jié)構(gòu)雀瓢,方便用戶(hù)的開(kāi)發(fā);
使用 chroot 后玉掸,系統(tǒng)讀取的是新根下的目錄和文件刃麸,這是一個(gè)與原系統(tǒng)根下文件不相關(guān)的目錄結(jié)構(gòu)。在這個(gè)新的環(huán)境中司浪,可以用來(lái)測(cè)試軟件的靜態(tài)編譯以及一些與系統(tǒng)不相關(guān)的獨(dú)立開(kāi)發(fā)嫌蚤。 - 切換系統(tǒng)的根目錄位置,引導(dǎo) Linux 系統(tǒng)啟動(dòng)以及急救系統(tǒng)等断傲。
chroot 的作用就是切換系統(tǒng)的根位置脱吱,而這個(gè)作用最為明顯的是在系統(tǒng)初始引導(dǎo)磁盤(pán)的處理過(guò)程中使用,從初始 RAM 磁盤(pán) (initrd) 切換系統(tǒng)的根位置并執(zhí)行真正的 init认罩。另外箱蝠,當(dāng)系統(tǒng)出現(xiàn)一些問(wèn)題時(shí),我們也可以使用 chroot 來(lái)切換到一個(gè)臨時(shí)的系統(tǒng)垦垂。
chroot 的使用
下面以Gentoo宦搬、Arch為例,說(shuō)明chroot過(guò)程:
- 確定chroot的目標(biāo)目錄:
如果LiveCD環(huán)境劫拗,掛載系統(tǒng)所在根分區(qū)
mount /dev/sdx /mnt/gentoo
- 掛載/proc
mount -t proc none /mnt/gentoo/proc/
或
mount -t proc proc /mnt/gentoo/proc/
- 掛載/sys,/dev/
mount --rbind /sys /mnt/gentoo/sys/
mount --rbind /dev /mnt/gentoo/dev/
- 可選:
mount --rbind /tmp /mnt/gentoo/tmp (gentoo)
mount --rbind /run /mnt/arch/run (arch)
- 復(fù)制DNS信息:
cp /etc/resolv.conf etc/resolv.conf
- chroot
chroot /mnt/gentoo /bin/bash
- 更新環(huán)境變量:
env-update (gentoo)
source /etc/profile
- Optionally, create a unique prompt to be able to differentiate your chroot environment:
export PS1="(chroot) $PS1"
結(jié)束語(yǔ)
在 Linux 系統(tǒng)初始引導(dǎo)的過(guò)程中间校,通常都有使用 chroot。但是 chroot 的好處不僅于此页慷,它還增加了系統(tǒng)的安全性等憔足。