chroot jail 안에 / bin 및 / lib 제공 / lib 디렉토리를 제공 할

프로그램이 동적으로 올바르게 링크 될 수 있도록 chroot jail 안에 / bin 및 / lib 디렉토리를 제공 할 수 있어야합니다.

/ bin 및 / lib 디렉토리를 chroot jail에 복사하지 않고이를 수행 할 수있는 방법이 있습니까?

심볼릭 링크를 시도했지만 chroot jails에서 작동하지 않으며 디렉토리를 하드 링크 할 수 없습니다.



답변

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

건배!


답변

jgr이 말한 것처럼 디렉토리를 마운트하지 않으려면 디렉토리 cp를 반복적으로 복사하고 모든 파일에 대한 하드 링크를 만드는 데 사용할 수 있습니다 .

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

이 방법은 당신의 chroot의 /bin/lib주요 디렉토리보다 약간 다른 구조 / 내용을 가질 수 있습니다.


답변

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


답변