Chroot

如何允許訪問根目錄之外的二進製文件

  • November 2, 2012

在 Heroku,我可以使用 ImageMagick 等二進​​製文件,但文件系統似乎是 chroot 和 Web 應用程序目錄(git 儲存庫)的複製。

如何允許訪問根以外的二進製文件?

這真的不是一個特定的 Heroku 問題,但我真的很想知道如何做到這一點。

你不能。根據定義chroot(),以某種方式限制您的訪問,即您無法訪問該上下文之外的任何內容。如果您需要使用其他二進製文件,則需要在 chroot 環境中安裝它們及其依賴項。

要檢查某個二進製文件具有哪些依賴項,您可以使用該ldd命令。例子:

xila:~# ldd /usr/bin/wget 
   linux-gate.so.1 =>  (0xb7784000)
   libdl.so.2 => /lib/libdl.so.2 (0xb7775000)
   librt.so.1 => /lib/librt.so.1 (0xb776c000)
   libssl.so.0.9.8 => /usr/lib/i586/libssl.so.0.9.8 (0xb7729000)
   libcrypto.so.0.9.8 => /usr/lib/i586/libcrypto.so.0.9.8 (0xb75ea000)
   libc.so.6 => /lib/libc.so.6 (0xb74ac000)
   /lib/ld-linux.so.2 (0xb7785000)
   libpthread.so.0 => /lib/libpthread.so.0 (0xb7494000)
   libz.so.1 => /usr/lib/libz.so.1 (0xb747e000)

如果您想wget在您的 chroot 中執行,您需要將所有這些庫複製到您的 chroot - 到適當的位置。這意味著,您需要模仿目錄結構。

但是,如果其中一個庫依賴於此處未列出的另一個庫,則您也必須複製它。對圖書館也做一個 ldd - 最終你會找到它們。

引用自:https://serverfault.com/questions/444937