chroot 실패-`/ bin / bash '명령을 실행할 수 없습니다 : 그러한 파일이나 디렉토리가 없습니다


16

나는 간단한 chroot 감옥을 만들려고 노력하는 chroot 초보자이지만 같은 문제를 반복해서 내 ​​머리를 두드리고 있습니다 ... 어떤 도움이라도 대단히 감사하겠습니다.

나는 /usr/chroot감옥으로 사용할 디렉토리 를 만들고 그 아래에 하위 디렉토리를 만들고 그 디렉토리에 종속성을 복사 /bin/bash했습니다.

[root@WIG001-001 ~]# cd /usr/chroot/
[root@WIG001-001 chroot]# ls
[root@WIG001-001 chroot]# mkdir bin etc lib var home


[root@WIG001-001 chroot]# ldd /bin/bash        
linux-vdso.so.1 =>  (0x00007fff99dba000)        
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00000037a2000000)        
libdl.so.2 => /lib64/libdl.so.2 (0x000000379fc00000)        
libc.so.6 => /lib64/libc.so.6 (0x000000379f800000)        
/lib64/ld-linux-x86-64.so.2 (0x000000379f400000)

[root@WIG001-001 chroot]# cp /lib64/libtinfo.so.5 /usr/chroot/lib/  
[root@WIG001-001 chroot]# cp /lib64/libdl.so.2 /udr/csr/chroot/lib/  
[root@WIG001-001 chroot]# cp /lib64/libc.so.6 /usr/chroot/lib/  
[root@WIG001-001 chroot]# cp /lib64/ld-linux-x86-64.so.2 /usr/chroot/lib/  
[root@WIG001-001 chroot]# cp /bin/bash bin  
[root@WIG001-001 chroot]# pwd  
/usr/chroot  
[root@WIG001-001 chroot]# /usr/sbin/chroot .  
/usr/sbin/chroot: cannot run command `/bin/bash': No such file or directory  


it looks like the /bin/bash created under /usr/chroot is fine as the below works:  
[root@WIG001-001 chroot]# su - nobody -s /usr/chroot/bin/bash  
-bash-4.0$ 

누구든지 여기서 어디로 가야할지 알 수 있습니까?


질문에 오타입니까, 수행 한 단계에서 오류입니까? cp /lib64/libdl.so.2 /udr/csr/chroot/lib/( /usr대신 사용 되어야 함 /udr)
추후 공지가있을 때까지 일시 중지되었습니다.

그것은 퍼티를 사용하여 텔넷 세션을 기록한 결과입니다. 죄송합니다. 제안한 바와 같이 입력 된 실제 명령은 cp /lib64/libdl.so.2 / usr / chroot / lib /입니다.
Mike Atkinson

답변:


30

오류 메시지가 잘못된 것입니다 : /bin/bash: No such file or directory그 중 하나를 의미 할 수 /bin/bash없거나에서 사용하는 동적 로더가 /bin/bash존재하지 않습니다. #!라인에 인터프리터 가없는 경우 스크립트에 대한이 메시지 가 표시됩니다.

/bin/bash찾고 /lib64/ld-linux-x86-64.so.2있지만 제공했습니다 /lib/ld-linux-x86-64.so.2. 확인 /usr/chroot/lib64에 대한 상징적 lib또는 그 반대의 경우도 마찬가지입니다.


죄송합니다. 도움을 주셔서 감사합니다. 맞습니다.하지만 여전히 혼란 스럽습니다. / bin / bash가 /lib/ld-linux-x86-64.so.2와 함께 제공되는 것을 잘 모르겠으며 / usr / chroot / lib64가 존재하지 않기 때문에 더 혼란 스럽습니다. 명령 목록을 요청하는 것이 너무 건방진 것일까 요? 나는 sym 링크와 그것들을 만드는 방법을 이해하지만, 여기서 일어나고있는 것과 그것을 수정하기 위해 제안하고있는 것에 정말로 혼란 스럽습니다. 도와 주셔서 감사합니다!
Mike Atkinson

1
@Mike : cp명령 /lib64을 확인하십시오. 기본 시스템 /lib에서 chroot 로 파일을 복사했습니다 . 하지만 bash는 바이너리는 여전히 찾고 있습니다 ld-linux-x86-64.so.2/lib64, (당신이 작성하지 않은한다)하지 /lib. 당신은 자신을함으로써 두통 절약 할 수 /lib/lib64그래서 실행 chroot에서 해당 ln -s lib /usr/chroot/lib64. 왜 오류 메시지가 문제가 bash아닌지에 ld-linux-x86-64.so.2대해서는 첫 번째 단락을 참조하십시오.
Gilles 'SO- 악마 그만'

완벽하게 작동합니다. 시간을 내 주셔서 감사합니다. 대단히 감사합니다!
Mike Atkinson

좋은 대답입니다. 제 경우에는 문제가 링크 유지 플래그없이 rsync에 의해 발생했습니다
gtsouk

1
@miyalys If /lib/usr/lib파일 과 같은 디렉토리이기 때문에 파일을 /usr/lib넣을 수 있는 심볼릭 링크입니다 /lib! 한 번에 로더가 /liband 의 내용에 대한 캐시를 유지하고 캐시를 /usr/lib다시 빌드 할 때 작업을 시작 했기 때문에 처음에는 작동하지 않았습니다 . 실행 ldconfig하면 캐시가 재 구축되며, 소프트웨어 업데이트를 설치했을 때 사용자 또는 자동으로 패키지 관리자가이를 수행했을 수 있습니다.
Gilles 'SO- 악마 중지


-1

나는 또한 같은 오류에 직면했다. 가장 좋은 방법은 복구 이미지 (라이브 CD) "/"내용과 "/ mnt / sysimage"내용의 차이점을 찾는 것입니다.

/ bin 및 / sbin을 "/"디렉토리에서 실수로 삭제 된 "/ mnt / sysimage"로 복사하여 문제가 해결되었습니다.

#cp -r /bin /sbin /mnt/sysimage
#reboot

-4

홈 디렉토리에 .bashrc 파일을 복사 해보십시오. 확실히 도움이 될 것입니다.


3
이것은 말도 안됩니다.
Sven
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.