chroot
명령을 실행하면 오류가 발생합니다.
failed to run command ‘/bin/bash’: No such file or directory
답변1
/bin/bash
이 오류는 디렉터리 가 없음을 의미합니다.내부 chroot. bash
실행 파일(또는 다른 셸)이 있는 디렉터리를 가리키도록 하세요 chroot
.
그렇다면 /mnt/somedir/usr/bin/bash
실행하십시오 chroot /mnt/somedir /usr/bin/bash
.
위의 것 외에도 libc
답변에서 언급한 대로 디렉터리 종속성을 추가해야 합니다.여기.
답변2
내부 루트 디렉토리가 있지만 내부에는 /bin/bash
없습니다 . 의 메시지가 더 설명적일 수 있습니다. "해당 파일이나 디렉터리가 없습니다"는 실제로 "이것을 실행할 수 없습니다..."를 의미합니다./lib
/lib64
chroot
/bin/bash
물론 등에 따라 libc
이를 사용하여 필요한 라이브러리를 확인할 ld-linux
수 있습니다.libdl
ldd /bin/bash
mount -o bind
이 디렉토리에서 다음을 수행할 수 있습니다.chroot
chroot
또는 chrooted 환경이 손상되지 않도록 신뢰하지 않는 경우 다음과 같이 이러한 라이브러리를 복사할 수 있습니다.cp -a /usr rootfs/ cp -a /lib rootfs/ cp -a /lib64 rootfs/
답변3
chroot
기본적으로 환경 변수에 설정된 셸을 시작하려고 시도했지만 $SHELL
새 루트 디렉터리에서 이를 찾기 때문에 해당 셸이 포함되어 있지 않은 것 같아 /bin/bash
시작되지 않습니다.
간단히 chroot를 인수로 추가하여 chroot에게 새 루트 디렉터리에서 다른 프로그램을 시작하도록 지시할 수 있습니다.
chroot /your/new/root /bin/foo --options...
명령 경로는 다음과 같이 해석됩니다.~에새로운 루트이므로 이 예에서 호출되는 프로그램은 실제로 다음 위치에 있습니다./your/new/root/bin/foo
답변4
원격 서버의 chroot 계정에 ssh를 시도할 때 동일한 오류가 발생했습니다. 내 경우에는 원격 lib64 디렉터리에 다음 파일이 누락되었습니다.서버는 Centos6.9입니다.
ld-linux-x86-64.so.2
다음 명령을 실행하여 문제가 해결되었습니다.
cp /lib64/ld-linux-x86-64.so.2 /secure/jail/lib64/