바이너리 및 해당 종속성을 복사한 후 "chroot" bash가 작동하지 않습니다.

바이너리 및 해당 종속성을 복사한 후 "chroot" bash가 작동하지 않습니다.

기존 질문과 답변을 살펴봤지만 그 중 어느 것도 내 사례에 적합하지 않았습니다. 그래서 새로운 질문을 드립니다.

운영 체제: 데비안

내 단계는 다음과 같습니다.

먼저 다음을 복사하세요 /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

관련 정보