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