Linux

你能解釋一下這個“chroot”/tmp 目錄創建嗎?

  • August 31, 2014

在下面的連結文章中,他們解釋瞭如何創建“chroot”/tmp 目錄。我對他們的所作所為有點困惑。有人可以解釋以下命令在做什麼嗎?

Noexec 和 /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目錄可以通過/tmpchroot 環境的目錄訪問。這樣,您的 chroot 環境將其/tmp目錄與系統的/tmp. 如果您跳過此步驟,則 chroot’ed/tmp目錄將指向您系統的/tmp目錄。

chroot /root/chroot

在這裡,您進入您的 chroot 環境。

現在你的問題:

  1. 第一個 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

引用自:https://unix.stackexchange.com/questions/152971