프로그램이 동적으로 올바르게 링크할 수 있도록 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
# ...