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
# ...

関連情報