在 chroot 监狱内提供 /bin 和 /lib

在 chroot 监狱内提供 /bin 和 /lib

我需要能够在 chroot 监狱内提供 /bin 和 /lib 目录,以便程序可以正确动态链接。

有没有办法在不将 /bin 和 /lib 目录复制到 chroot 监狱的情况下完成此操作?

我尝试过符号链接,但它们在 chroot 监狱内不起作用,并且目录无法硬链接。

答案1

您可以使用mount以下方法重新挂载监狱中所需的目录:

# mount --bind /bin /chroot/bin
# mount --bind /lib /chroot/lib
# chroot /chroot

用于/etc/fstab

/bin /chroot/bin none bind
/lib /chroot/lib none bind

干杯!

答案2

如果您不想像 jgr 所说的那样挂载目录,您可以使用cp递归复制目录并为所有文件创建硬链接:

cp -alf /bin /chroot/bin
cp -alf /lib /chroot/lib
chroot /chroot

这样,您的 chroot 的结构/内容可能/bin/lib主目录略有不同。

答案3

#!/bin/bash

copy_file_and_dependencies() {
    PROGRAM="$1"
    DEPENDENCIES="$(ldd "$PROGRAM" | awk '{ print $3 }' | grep -v '(' | grep -v 'not a dynamic executable')"

    mkdir -p "${JAIL}$(dirname $PROGRAM)"
    cp -Lv "$PROGRAM" "${JAIL}${PROGRAM}"

    for f in $DEPENDENCIES; do
        mkdir -p "${JAIL}$(dirname $f)"
        cp -Lv "$f" "${JAIL}${f}"
    done
}

export -f copy_file_and_dependencies

copy_file_and_dependencies /etc/ld.so.cache
copy_file_and_dependencies /bin/sh
# ...

相关内容