chroot: '/bin/bash' 명령을 실행하지 못했습니다: 해당 파일이나 디렉터리가 없습니다

chroot: '/bin/bash' 명령을 실행하지 못했습니다: 해당 파일이나 디렉터리가 없습니다

명령 을 실행하면 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

나는 chrooted 디렉토리 내부에 있었지만 그 안에는 /bin/bash없었 /lib습니다 /lib64. 의 메시지가 chroot더 설명적일 수 있습니다. "해당 파일이나 디렉터리가 없습니다"는 실제로 "이것을 실행할 수 없습니다..."를 의미합니다.

/bin/bash물론 libc, 등에 따라 달라지므로 필요한 라이브러리를 확인하는 데 사용할 수 있습니다 .ld-linuxlibdlldd /bin/bash

  1. mount -o bind다음 디렉토리에서 할 수 있습니다 .chroot
  2. chroot또는 다음과 같이 chrooted 환경이 손상되지 않는다고 신뢰하지 않는 경우 이러한 라이브러리를 에 복사할 수 있습니다 .
    cp -a /usr rootfs/
    cp -a /lib rootfs/
    cp -a /lib64 rootfs/
    

답변3

chroot기본적으로 환경 변수 에 설정된 셸을 시작하려고 시도 $SHELL하지만 가 포함되어 있지 않은 것으로 보이는 새 루트 디렉터리에서 이를 찾으 /bin/bash므로 시작할 수 없습니다.

간단히 매개변수로 추가하여 chroot에게 새 루트 내에서 다른 프로그램을 시작하도록 지시할 수 있습니다.

chroot /your/new/root /bin/foo --options...

명령의 경로가 해석된다는 점에 유의하세요.내부에새로운 루트이므로 이 예에서 호출된 프로그램은 실제로/your/new/root/bin/foo

답변4

원격 서버에서 루트 계정으로 SSH를 시도할 때 동일한 오류가 발생했습니다. 제 경우에는 원격 lib64 디렉터리에 다음 파일이 누락되었습니다.서버는 Centos6.9입니다.

ld-linux-x86-64.so.2

다음을 실행하여 문제가 해결되었습니다.

cp /lib64/ld-linux-x86-64.so.2 /secure/jail/lib64/

관련 정보