91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux系統chroot命令該如何使用

發布時間:2022-01-27 09:24:50 來源:億速云 閱讀:276 作者:kk 欄目:開發技術

本篇文章給大家分享的是有關Linux系統chroot命令該如何使用,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

chroot簡介:

  • chroot,既是Linux的一條命令,也是它的一個系統調用。

  • chroot的作用就是就是改變當前環境的根目錄到一個文件夾,這個文件夾之外的東西,

  • 對于當前環境都是不可見的。

  • 因此若是運行不信任的代碼或程序,使用chroot作為一個安全沙箱是個很好的選擇。

為何使用 chroot

在經過 chroot 之后,系統讀取到的目錄和文件將不在是舊系統根下的而是新根下(即被指定的新的位置)的目錄結構和文件,因此它帶來的好處大致有以下3個:

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

    在經過 chroot 之后,在新根下將訪問不到舊系統的根目錄結構和文件,這樣就增強了系統的安全性。這個一般是在登錄 (login) 前使用 chroot,以此達到用戶不能訪問一些特定的文件。

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

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

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

    chroot 的作用就是切換系統的根位置,而這個作用最為明顯的是在系統初始引導磁盤的處理過程中使用,從初始 RAM 磁盤 (initrd) 切換系統的根位置并執行真正的 init。另外,當系統出現一些問題時,我們也可以使用 chroot 來切換到一個臨時的系統。

chroot 的使用

為了更好的理解 chroot 發揮的作用,我們將嘗試指定一個特定的位置進行根目錄切換。但是由于在經過 chroot 之后,系統讀取到的 bin/ 等與系統相關目錄將不再是舊系統根目錄下的,而是切換后新根下的目錄結構和文件,因此我們有必要準備一些目錄結構以及必要的文件。

清單 1. 準備切換的目錄結構

busybox

Busybox 被稱為是嵌入式 Linux 中的瑞士軍刀。Busybox 包含了許多有用的命令,如 cat、find 等,但是它的體積卻非常的小。

 $ pwd
 /home/wstone/Build/work
 $ tree .
 .
 |-- bin
 | |-- ash -> busybox
 | |-- bash
 | `-- busybox
 |-- etc
 `-- newhome

這里使用了靜態編譯后的 busybox 來提供必要的命令,使用靜態編譯僅是為了避免動態庫文件的拷貝。當然我們也可以拷貝舊系統的下的命令到新的目錄結構中使用,但是那些命令通常是動態編譯的,這就意味著我們不得不拷貝相關的動態庫文件到相應的目錄結構中。同時這里的 bash 也非真正的 Bourne Again shell,而是一個執行 ash 的 shell 腳本。在清單 2中,展示了位于舊系統中的 chroot 命令的使用。需要注意的是在使用 chroot 時,要求擁有相關的操作權限。

清單 2. 位于系統中的 chroot 的使用

 mount /dev/hda1 /new-root
 cd /new-root
 pivot_root . old-root
 exec chroot . /sbin/initdev/console 2>&1
 umount /old-root

我們可以看到當前路徑(/home/wstone/Build/work/),在經過 chroot 后轉變成了 / 目錄,同時從新根下讀取了與系統相關的目錄結構。使用 ls 命令失敗是由于我們創建的測試目錄結構中并沒有包含命令 ls,但是我們成功的使用了 busybox 中的 ls。以上看到的只是 chroot 的一種使用方式,其實標準的 chroot (Coreutils – GNU core utilities 提供的 chroot)使用方式有2種:

清單 3. 標準 chroot 的2種使用方式

 chroot NEWROOT [COMMAND...]
 
 chroot OPTION

剛才我們使用的是方式[2]。這將在沒有給定環境時,默認執行 /bin/sh,但是當給定環境后,將運行 ${SHELL} –i,即與環境相同的可交互的 shell。我們的目錄結構中并沒有包含sh,顯然清單 2中的 chroot 運行了 ${SHELL} –i。當然我們也可以在進行切換時指定需要的命令,即使用方式[1]。

清單 4. chroot 另一種方式的使用

 # chroot . /bin/ash
 #

清單 4 中,嘗試了在經過 chroot 后,執行新目錄結構下的 ash shell。不得不說的是,如果新根下的目錄結構和文件準備的夠充分,那么一個新的簡單的 Linux 系統就可以使用了。其實更為常見的是在初始 RAM 磁盤 (initrd)中使用 chroot,以此來執行系統的 init。清單 5 中,展示的是在 Linux 2.4 內核 initrd 中使用 chroot。

清單 5. 在 Linux 2.4 內核 initrd 中使用 chroot 的示例

 mount /dev/hda1 /new-root
 cd /new-root
 pivot_root . old-root
 exec chroot . /sbin/initdev/console 2>&1
 umount /old-root

由于 Linux 內核的升級,initrd 處理機制和格式發生了變化,在 Linux 2.6 內核 initrd 中不能再使用 pivot_root,因此一般也不再使用 chroot,而是選擇使用 busybox 提供的 switch_root 或者 klibc 提供的 run-init 進行根目錄的切換。(這并不是說不能在 Linux 2.6內核 initrd 中使用 chroot,選擇 switch_root 或 run-init 僅是出于習慣和方便的考慮。)但是實質上,它們僅是將 chroot 的功能進行了封裝,以此更加方便簡單的切換根目錄。

清單 6. 在 Linux 2.6 內核 initrd 中 chroot 的使用

 find -xdev / -exec rm '{}' ';
 cd /newmount; mount --move . /; chroot .

switch_root 和 run-init 完成了類似清單 6中的功能,刪除 rootfs 的全部內容以釋放空間,以及掛載新的根文件系統并進行切換。在 busybox 和 klibc中也有提供 chroot 命令,只是功能上與 Coreutils (GNU core utilities) 包含的 chroot 有稍許差異。

什么是Linux系統

Linux是一種免費使用和自由傳播的類UNIX操作系統,是一個基于POSIX的多用戶、多任務、支持多線程和多CPU的操作系統,使用Linux能運行主要的Unix工具軟件、應用程序和網絡協議。

以上就是Linux系統chroot命令該如何使用,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辽源市| 运城市| 东海县| 五莲县| 合江县| 八宿县| 简阳市| 慈溪市| 阜平县| 伊宁县| 四会市| 金寨县| 泊头市| 潼南县| 黎城县| 历史| 井冈山市| 永春县| 乐都县| 寿宁县| 三台县| 澄江县| 奈曼旗| 临澧县| 儋州市| 宝鸡市| 固原市| 吉林市| 宁河县| 大洼县| 如皋市| 康平县| 梨树县| 策勒县| 潞西市| 琼中| 奉节县| 玉林市| 高安市| 商都县| 吴堡县|