你能解釋一下這個“chroot”/tmp 目錄創建嗎?
在下面的連結文章中,他們解釋瞭如何創建“chroot”/tmp 目錄。我對他們的所作所為有點困惑。有人可以解釋以下命令在做什麼嗎?
1. # mkdir -p /root/chroot /root/tmp 2. # mount --bind / /root/chroot 3. # mount --bind /root/tmp /root/chroot/tmp 4. # chroot /root/chroot
第一步,他們為什麼創建**/root/tmp而不是/root/chroot/tmp**?
第一個 mount 命令會影響第二個嗎?第二步,他們將新目錄**/root/chroot綁定到根目錄。這是否意味著在第三步/root/tmp實際上指向/root/chroot/root/tmp**?/root/chroot/tmp來自哪裡?這就是我感到困惑的部分。
這背後的邏輯是什麼?
在第 2 步中,您綁定安裝
/
在/root/chroot
.如果您創建步驟 2.5,
ls /root/chroot
您將找到/
列出的所有目錄;包括系統的/tmp
目錄。如果您
touch /root/chroot/test
會看到它test
也在ls /
. 如果您rm /test
會注意到它也已從/root/chroot/
. 所以/
和/root/chroot/
是完全相同的地方。如果您想更詳細地查看,請執行
stat /
然後stat /root/chroot
,您會注意到兩者都返回相同的Inode
. AnInode
是一種資料結構,它引用磁碟上的特定文件/目錄。由於它們都返回相同Inode
,因此兩條路徑都指向完全相同的目錄。因此,第 3 步 bind 將目錄掛載到已綁定掛載
/root/tmp
的系統目錄之上。/tmp``/root/chroot
當您
chroot
進入第 4 步時,您將/
使用/tmp
目錄 in/root
而不是系統範圍的 chroot/tmp
。這樣,chroot 就不會/tmp
與系統上的所有其他使用者共享 a。
mkdir -p /root/chroot /root/tmp
創建用於 chroot 環境的目錄。
/root/chroot
將是您的 chroot 環境的根目錄。/root/tmp
將充當/tmp
您的 chroot 環境的目錄。mount --bind / /root/chroot
這將使您的
/
目錄可以通過/root/chroot
. 將此視為鏡像/
目錄/root/chroot
(即使它不是真正的鏡像,它是指向 的指針/
)。mount --bind /root/tmp /root/chroot/tmp
這將使您的自定義
/root/tmp
目錄可以通過/tmp
chroot 環境的目錄訪問。這樣,您的 chroot 環境將其/tmp
目錄與系統的/tmp
. 如果您跳過此步驟,則 chroot’ed/tmp
目錄將指向您系統的/tmp
目錄。chroot /root/chroot
在這裡,您進入您的 chroot 環境。
現在你的問題:
- 第一個 mount 命令會影響第二個嗎?
是的。您需要綁定掛載您的 chroot 環境 (
/root/chroot
) 的根目錄,然後才能綁定它的/tmp
目錄。/root/chroot/tmp
在綁定/
到/root/chroot
. 2. 第二步,他們將新目錄綁定/root/chroot
到根目錄。這是否意味著在第三步上/root/tmp
實際上指向/root/chroot/root/tmp
?是的。上的所有內容
/
都可以通過 訪問/root/chroot
。 3. 從哪裡來/root/chroot/tmp
?
/root/chroot/tmp
在您在第 2 步中綁定/
到之後才存在。/root/chroot