2011-05-03 35 views
0
  1. 當我在chroot監獄中放置了一個進程後,它可以訪問libc.so位於jail之外的庫。爲什麼或者如何?chroot進程如何訪問其庫依賴關係?

  2. 如果我們有一個指向jail外的文件的軟鏈接,我們可以訪問主文件嗎?

  3. 我們可以在多線程應用程序中使用chroot嗎?或者如果我們從一個線程改變根目錄,整個過程的根目錄會改變?

  4. 我讀過chroot函數沒有提供真正的安全環境,在Linux上有沒有其他解決方案?

回答

1
  1. 只要它有它打開調用chroot之前,它仍然有它打開,就像它自己的二進制文件。但是,chroot是特權操作,所以調用它的進程可能會改變標識並執行實際進程,除非它在chroot中可用,否則將無法訪問libc.so
  2. 軟鏈接在進程的名稱空間中解析,因此它不會解析爲在chroot之外的文件。
  3. 我不確定(並且會懷疑它沒有)。通常它並不重要,因爲被特權操作是在一個不是多線程的簡單包裝器中完成的,而是僅在chrooting之後啓動多線程應用程序,關閉所有文件句柄,將當前目錄切換到chroot並刪除特權。
  4. Chroot不安全。 Root可以很容易地逃脫(例如再次安裝設備)。有Linux-Vserver,lxcOpenVZ,提供安全的進程隔離。 LXC使用cgroups Linux特性(自內核2.6.29開始),另外兩個似乎需要補丁內核。如果你只是需要監禁一個應用程序,你也可以自己設置cgroup。
+1

我不確定lxc是否更安全,root仍然可以在/上掛載任何設備。 – 2011-08-24 18:26:23