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
mkdir
newroot
編譯自己的程式: ?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
234cp
a.out newroot
mkdir
newroot
/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...