chroot başarısız - `/ bin / bash 'komutu çalıştırılamıyor: Böyle bir dosya veya dizin yok


16

Ben basit bir chroot hapishanesi yapmaya çalışan bir acemi değilim ama tekrar tekrar aynı probleme karşı başımı vuruyorum ... Herhangi bir yardım çok takdir edilecektir

/usr/chrootBir hapishane olarak kullanmak istediğiniz bir dizin oluşturdum ve altında alt dizinler oluşturdum ve bağımlılıkları /bin/bashiçine kopyaladım :

[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$ 

Biri bana buradan nereye gideceğimi söyleyebilir mi?


Bu sorudaki bir yazım hatası mı yoksa gerçekleştirdiğiniz adımlarda bir hata mı? cp /lib64/libdl.so.2 /udr/csr/chroot/lib/( /usryerine /udr):
sonraki duyuruya kadar duraklatıldı.

Telnet oturumunu kaydetmek için Putty'yi kullanmanın bir eseri, üzgünüm. Önerdiğiniz gibi, girilen gerçek komut cp /lib64/libdl.so.2 / usr / chroot / lib /
Mike Atkinson

Yanıtlar:


30

Hata mesajı yanıltıcı : /bin/bash: No such file or directoryya var /bin/basholmadığı ya da tarafından kullanılan dinamik yükleyicinin mevcut olmadığı anlamına gelebilir /bin/bash. (Satırdaki yorumlayıcı yoksa bir komut dosyası için de bu mesajı alırsınız #!.)

/bin/basharıyor /lib64/ld-linux-x86-64.so.2ama sağladınız /lib/ld-linux-x86-64.so.2. Yap /usr/chroot/lib64sembolik libveya tam tersi.


Üzgünüm, yardımı gerçekten takdir ediyorum ve haklı olduğuna eminim, ama hala kafam karıştı! / Bin / bash /lib/ld-linux-x86-64.so.2 ile nerede görüldüğünden emin değilim ve / usr / chroot / lib64 olmadığı için daha da kafam karıştı. Bir komut listesi istemek çok arsız olur mu? Sym bağlantılarını ve nasıl oluşturulacağını anlıyorum, ancak burada neler olduğu ve düzeltmeyi önerdiğinizle gerçekten kafam karıştı. Yardımınız için çok teşekkürler!
Mike Atkinson

1
@Mike: cpKomutlarınıza bakın: dosyaları /lib64temel sistemden /libchroot içine kopyaladınız . Ama Bash ikili hala arıyor ld-linux-x86-64.so.2in /lib64, (siz oluşturmadıysanız olan) değil /lib. Krootta /libve /lib64eşdeğeri yaparak baş ağrısını kurtaracaksın , koş ln -s lib /usr/chroot/lib64. Hata mesajının neden hakkında basholup olmadığı hakkında ld-linux-x86-64.so.2, ilk paragrafıma bakın.
Gilles 'SO- kötü olmayı bırak

Bu mükemmel çalışıyor, zaman ayırdığınız için çok teşekkür ederim, büyük beğeni topluyor!
Mike Atkinson

Mükemmel cevap. Benim durumumda sorun bağlantı bağlantıları bayrağı olmadan rsync neden oldu
gtsouk

1
@miyalys If bir dosya koymak için /libbir symlink koyar , çünkü bunlar aynı dizin var! Önseziyle anda, yükleyici içeriğinin bir önbellek tutar çünkü ilk başta işi yoktu ve ve önbellek yeniden inşa edildi zaman çalışmaya başladı. Çalıştırmak önbelleği yeniden oluşturur ve sizin tarafınızdan veya otomatik olarak örneğin bir yazılım güncelleştirmesi yüklediğinizde paket yöneticisi tarafından yapılmış olabilir. /usr/lib/usr/lib/lib/lib/usr/libldconfig
Gilles 'SO- kötü olmayı bırak'


-1

Aynı hatayla da karşılaştım. En iyi yol kurtarma görüntüsü (canlı CD) "/" içeriği ve "/ mnt / sysimage" içeriği arasındaki farkı bulmaktır.

Sorun, / bin ve / sbin öğelerini "/" dizininden "/ mnt / sysimage" dizinine yanlışlıkla silindiği şekilde çözümleyerek çözüldü.

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

-4

Ana dizindeki .bashrc dosyasını kopyalamayı denemelisiniz. ve kesinlikle yardımcı olacaktır.


3
Bu saçmalık.
Sven
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.