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
已暂停,直到另行通知。

抱歉,这是使用Putty记录telnet会话的伪像。如您所建议,输入的实际命令是cp /lib64/libdl.so.2 / usr / chroot / lib /
Mike Atkinson 2010年

Answers:


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反之亦然。


抱歉,非常感谢您的帮助,我确定您是对的,但我仍然感到困惑!我不确定/lib/ld-linux-x86-64.so.2是否提供了/ bin / bash,由于/ usr / chroot / lib64不存在,我进一步感到困惑。要求命令列表是否太厚脸皮?我了解符号链接及其创建方式,但是对于这里发生的事情以及您建议纠正的内容确实感到困惑。非常感谢您的帮助!
Mike Atkinson

1
@Mike:查看您的cp命令:您将/lib64基本系统/lib中的文件复制到chroot中。但是bash二进制文件仍在查找ld-linux-x86-64.so.2/lib64(您尚未创建),而不是/lib。通过在chroot中创建/lib和,您将避免头痛/lib64,因此请运行ln -s lib /usr/chroot/lib64。至于为什么错误消息是关于bash而不是关于ld-linux-x86-64.so.2,请参阅我的第一段。
吉尔斯(Gillles)“所以-别再作恶了”

效果很好,非常感谢您抽出宝贵的时间,对此深表感谢!
Mike Atkinson,2010年

好答案。就我而言,问题是由不带保留链接标志的rsync引起的
gtsouk 2014年

1
@miyalys如果/lib是一个符号链接,/usr/lib则将文件/usr/lib放入/lib,因为它们是同一目录!在一种预感,它没有工作,起初是因为装载机保留的内容缓存/lib/usr/lib,并开始工作时,高速缓存被重建。运行会ldconfig重建缓存,它可能是由您完成的,也可能是由软件包管理器自动完成的,例如在安装软件更新时。
吉尔斯(Gillles)“所以-别再邪恶了”,


-1

我也遇到了同样的错误。最好的方法是找到应急映像(实时CD)“ /”内容和“ / mnt / sysimage”内容之间的差异。

通过将/ bin和/ sbin从“ /”目录处理到意外删除的“ / mnt / sysimage”,解决了该问题。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.