如何允许访问根目录之外的二进制文件

如何允许访问根目录之外的二进制文件

在 Heroku 我可以使用 ImageMagick 等二进制文件,但文件系统似乎是 chroot 的,并且是 Web 应用程序目录(git 存储库)的克隆。

如何允许访问根目录之外的二进制文件?

这确实不是一个特定的 Heroku 问题,但我确实想知道如何做到这一点。

答案1

你不能。根据定义,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 - 最终您将找到所有库。

相关内容