기존 질문과 답변을 살펴봤지만 그 중 어느 것도 내 사례에 적합하지 않았습니다. 그래서 새로운 질문을 드립니다.
운영 체제: 데비안
내 단계는 다음과 같습니다.
먼저 다음을 복사하세요 /bin/bash
.
$ sudo mkdir -p /mychroot/bin
$ sudo cp /bin/bash /mychroot/bin/
그런 다음 종속성을 찾습니다.
$ sudo ldd /bin/bash
linux-vdso.so.1 (0x00007ffd807ec000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f00c86fa000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f00c86f4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f00c8520000)
/lib64/ld-linux-x86-64.so.2 (0x00007f00c8869000)
동적으로 연결된 종속성을 복사합니다. 잘못된 디렉토리에 복사하면 다음을 모두 시도합니다.
$ sudo mkdir -p /mychroot/lib/x86_64-linux-gnu/
$ sudo ldd /bin/bash | grep "=>" | awk '{print $3}' | xargs -I '{}' sudo cp -v '{}' /mychroot/lib/x86_64-linux-gnu/
'/lib/x86_64-linux-gnu/libtinfo.so.6' -> '/mychroot/lib/x86_64-linux-gnu/libtinfo.so.6'
'/lib/x86_64-linux-gnu/libdl.so.2' -> '/mychroot/lib/x86_64-linux-gnu/libdl.so.2'
'/lib/x86_64-linux-gnu/libc.so.6' -> '/mychroot/lib/x86_64-linux-gnu/libc.so.6'
# copy deps into lib64 (just in case)
$ sudo mkdir -p /mychroot/lib64
$ sudo ldd /bin/bash | grep "=>" | awk '{print $3}' | xargs -I '{}' sudo cp -v '{}' /mychroot/lib64
'/lib/x86_64-linux-gnu/libtinfo.so.6' -> '/mychroot/lib64/libtinfo.so.6'
'/lib/x86_64-linux-gnu/libdl.so.2' -> '/mychroot/lib64/libdl.so.2'
'/lib/x86_64-linux-gnu/libc.so.6' -> '/mychroot/lib64/libc.so.6'
# copy deps into lib (just in case)
$ sudo mkdir -p /mychroot/lib
$ sudo ldd /bin/bash | grep "=>" | awk '{print $3}' | xargs -I '{}' sudo cp -v '{}' /mychroot/lib
'/lib/x86_64-linux-gnu/libtinfo.so.6' -> '/mychroot/lib/libtinfo.so.6'
'/lib/x86_64-linux-gnu/libdl.so.2' -> '/mychroot/lib/libdl.so.2'
'/lib/x86_64-linux-gnu/libc.so.6' -> '/mychroot/lib/libc.so.6'
달리기 chroot
:
$ sudo chroot /mychroot
chroot: failed to run command ‘/bin/bash’: No such file or directory
어떤 아이디어가 있나요?
업데이트: 이제 모든 파일을 복사해야 한다는 것을 깨달았습니다. 테스트를 시도했지만 sudo cp -r /lib /lib64 /mychroot
여전히 작동하지 않습니다.
답변1
/lib64/ld-linux-x86-64.so.2
도서관이 사라진 것으로 밝혀졌습니다 . 이러한 공유 라이브러리도 올바른 디렉토리에 있어야 합니다.
마침내 나에게 도움이 된 것은 다음과 같습니다(chroot 환경을 만든 위치가 약간 변경되었지만 매우 간단합니다).
$ mkdir -p ~/mychroot/{bin,lib,lib64}
$ cp /bin/bash ~/mychroot/bin/bash
$ ldd /bin/bash
linux-vdso.so.1
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6
/lib64/ld-linux-x86-64.so.2
$ cp --parent {/lib/x86_64-linux-gnu/libtinfo.so.6,/lib/x86_64-linux-gnu/libdl.so.2,/lib/x86_64-linux-gnu/libc.so.6,/lib64/ld-linux-x86-64.so.2} ~/mychroot
$ sudo chroot ~/mychroot /bin/bash