国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

linux chroot命令詳解

2024-08-28 00:01:58
字體:
來源:轉載
供稿:網友

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

基本語法

chroot NEWROOT [COMMAND [ARG]...]

具體用法請參考本文的 demo。

為什么要使用 chroot 命令

增加了系統的安全性,限制了用戶的權力:

在經過 chroot 之后,在新根下將訪問不到舊系統的根目錄結構和文件,這樣就增強了系統的安全性。一般會在用戶登錄前應用 chroot,把用戶的訪問能力控制在一定的范圍之內。

建立一個與原系統隔離的系統目錄結構,方便用戶的開發:

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

切換系統的根目錄位置,引導 Linux 系統啟動以及急救系統等:

chroot 的作用就是切換系統的根位置,而這個作用最為明顯的是在系統初始引導磁盤的處理過程中使用,從初始 RAM 磁盤 (initrd) 切換系統的根位置并執行真正的 init,本文的最后一個 demo 會詳細的介紹這種用法。

通過 chroot 運行 busybox 工具

busybox 包含了豐富的工具,我們可以把這些工具放置在一個目錄下,然后通過 chroot 構造出一個 mini 系統。簡單起見我們直接使用 docker 的 busybox 鏡像打包的文件系統。先在當前目錄下創建一個目錄 rootfs:

$ mkdir rootfs

然后把 busybox 鏡像中的文件釋放到這個目錄中:

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

通過 ls 命令查看 rootfs 文件夾下的內容:

$ ls rootfs

萬事俱備,讓我們開始吧!

執行 chroot 后的 ls 命令

$ sudo chroot rootfs /bin/ls

雖然輸出結果與剛才執行的 ls rootfs 命令形同,但是這次運行的命令卻是 rootfs/bin/ls。

運行 chroot 后的 pwd 命令

$ sudo chroot rootfs /bin/pwd

哈,pwd 命令真把 rootfs 目錄當根目錄了!

不帶命令執行 chroot

$ sudo chroot rootfs

這次出錯了,因為找不到 /bin/bash。我們知道 busybox 中是不包含 bash 的,但是 chroot 命令為什么會找 bash 命令呢? 原來,如果不給 chroot 指定執行的命令,默認它會執行 '${SHELL} -i',而我的系統中 ${SHELL} 為 /bin/bash。

既然 busybox 中沒有 bash,我們只好指定 /bin/sh 來執行 shell 了。

$ sudo chroot rootfs /bin/sh

運行 sh 是沒有問題的,并且我們打印出了當前進程的 PID。

檢查程序是否運行在 chroot 環境下

雖然我們做了好幾個實驗,但是肯定會有朋友心存疑問,怎么能證明我們運行的命令就是在 chroot 目錄后的路徑中呢?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 喀喇沁旗| 赤壁市| 尼玛县| 伊春市| 津南区| 邛崃市| 观塘区| 阿鲁科尔沁旗| 桐乡市| 浏阳市| 榆中县| 岳普湖县| 平阳县| 杭州市| 定日县| 隆化县| 广州市| 吉水县| 平凉市| 西华县| 宁河县| 长海县| 丰都县| 收藏| 海口市| 贵定县| 嘉定区| 锦州市| 杂多县| 元朗区| 蓬溪县| 屏山县| 丰顺县| 临朐县| 湖口县| 迁西县| 东山县| 纳雍县| 和硕县| 调兵山市| 龙山县|