運維chroot語法

2022-07-30 06:48:13 字數 2705 閱讀 9792

chroot命令

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

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

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

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

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

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

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

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

語法?1

chroot(選項)(引數)

選項?1

引數

1.目錄:指定新的根目錄;

2.指令:指定要執行的指令。 

例項

將target作為根目錄(執行其中的/bin/sh): ?1

chroot target/bin/sh

這裡,target是busybox安裝好的路徑,類似乙個檔案系統包含了許多任務具。這樣,將會進入乙個shell介面,這個shell以target為根。執行exit退出該shell又返回原來的本機環境了,也可以使用ctrl+d。

注意:

1.根使用者才行

2.如果直接chroot target預設尋找target的/bin/bash.這會以target作為根目錄

將target作為根目錄(執行其中的/bin/ls): ?1

chroot target/bin/ls

這裡,target是busybox安裝好的路徑,類似乙個檔案系統包含了許多任務具。這樣執行的是target中的ls(不是本機的/bin/ls),然後返回立即本機的目錄環境。

注意,自己在本地編譯乙個程式生成a.out之後,拷進target/bin/中這樣執行卻不行,因為它包含了動態連線的庫,需要用ldd檢視a.out需要那些動態庫,將這些庫拷貝到新根的對應路徑下才能執行。

用chroot執行自己編譯的乙個程式:

準備chroot的根目錄: ?1

mkdirnewroot

編譯自己的程式: ?1

gcc main.c

這裡main.c生成a.out,功能是輸出hello。

檢視程式需要的庫: ?1

ldd a.out

輸入之後,輸出如下:?1

23linux-gate.so.1 = > (0xb8034000)

libc.so.6 = >/lib/tls/i686/cmov/libc.so.6 (0xb7eab000)

/lib/ld-linux.so.2 (0xb801a000)

將程式需要的庫和程式拷貝到新根目錄下: ?1

234cpa.out newroot

mkdirnewroot/lib

cp/lib/tls/i686/cmov/libc.so.6 newroot/lib

cp/lib/ld-linux.so.2 newroot/lib

這裡newroot內容將如下: ?1

a.out lib/

使用chroot執行自己的程式: ?1

2su

chroot newroot/a.out

這樣就能夠正確執行a.out了,因為a.out使用到了其他的動態連線庫,所以需要將庫拷貝到newroot中,如果沒有其他庫那麼直接拷貝a.out就能執行。例如靜態編譯後的busybox,其安裝目錄中的/bin/busybox就沒有依賴其他庫。

運維nslookup語法

查詢網域名稱dns資訊的工具 nslookup命令是常用網域名稱查詢工具,就是查dns資訊用的命令。nslookup4有兩種工作模式,即 互動模式 和 非互動模式 在 互動模式 下,使用者可以向網域名稱伺服器查詢各類主機 網域名稱的資訊,或者輸出網域名稱中的主機列表。而在 非互動模式 下,使用者可以...

運維(1)什麼是運維

運維,這裡指網際網路運維,通常屬於技術部門,與研發 測試 系統管理同為網際網路產品技術支撐的4大部門,這個劃分在國內和國外以及大小公司間都會多少有一些不同。乙個網際網路產品的生成一般經歷的過程是 產品經理 需求分析 研發部門開發 測試部門測試 運維部門部署發布以及長期的執行維護。對於初創公司,運維部...

初級運維個人運維筆記

實時抓取並顯示當前系統中tcp 80埠的網路資料資訊,請寫出完整操作命令 tcpdump nn tcp port 80 如何重置mysql root密碼?一 在已知mysql資料庫的root使用者密碼的情況下,修改密碼的方法 1 在shell環境下,使用mysqladmin命令設定 mysqladm...