Chroot
如何允許訪問根目錄之外的二進製文件
在 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 - 最終你會找到它們。