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

관련 정보