chroot fallito - impossibile eseguire il comando `/ bin / bash ': nessun file o directory


16

Sono un novizio chroot che cerca di fare una semplice prigione chroot ma mi sbatto la testa contro lo stesso problema più e più volte ... Qualsiasi aiuto sarebbe apprezzato in modo massiccio

Ho creato una directory /usr/chrootche voglio usare come jail e ho creato sottodirectory sotto di essa e ho copiato le dipendenze /bin/bashin essa:

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

Qualcuno può darmi qualche idea su dove andare da qui?


È un errore di battitura nella domanda o un errore nei passaggi che hai eseguito? cp /lib64/libdl.so.2 /udr/csr/chroot/lib/(dovrebbe essere /usrinvece di /udr)
In pausa fino a nuovo avviso.

Questo è un artefatto derivante dall'utilizzo di Putty per registrare la sessione telnet, mi dispiace. Come suggerisci, il comando effettivamente inserito era cp /lib64/libdl.so.2 / usr / chroot / lib /
Mike Atkinson,

Risposte:


30

Il messaggio di errore è fuorviante : /bin/bash: No such file or directorypuò significare che /bin/bashnon esiste o che il caricatore dinamico utilizzato da /bin/bashnon esiste. (Riceverai anche questo messaggio per uno script se l'interprete sulla #!linea non esiste.)

/bin/bashsta cercando /lib64/ld-linux-x86-64.so.2ma tu hai fornito /lib/ld-linux-x86-64.so.2. Fai /usr/chroot/lib64un simbolico libo viceversa.


Mi dispiace, apprezzo molto l'aiuto e sono sicuro che tu abbia ragione, ma sono ancora confuso! Non sono sicuro dove vedi / bin / bash viene fornito con /lib/ld-linux-x86-64.so.2 e sono ulteriormente confuso poiché / usr / chroot / lib64 non esiste. Sarebbe troppo sfacciato chiedere un elenco di comandi? Comprendo i collegamenti sym e come crearli, ma sono davvero confuso da ciò che sta accadendo qui e da cosa stai suggerendo di correggerlo. Grazie mille per il tuo aiuto!
Mike Atkinson,

1
@ Mike: guarda i tuoi cpcomandi: hai copiato i file dal /lib64sistema di base /libal chroot. Ma il binario bash sta ancora cercando ld-linux-x86-64.so.2in /lib64(che non si è creato), non è /lib. Ti risparmierai mal di testa creando /libed /lib64equivalenti nel chroot, quindi corri ln -s lib /usr/chroot/lib64. Per quanto riguarda il motivo per cui il messaggio di errore riguarda bashe non riguarda ld-linux-x86-64.so.2, vedere il mio primo paragrafo.
Gilles 'SO- smetti di essere malvagio' il

Funziona perfettamente, grazie mille per aver dedicato del tempo, è molto apprezzato!
Mike Atkinson,

Bella risposta. Nel mio caso il problema è stato causato da rsync senza la bandiera dei collegamenti di conservazione
gtsouk,

1
@miyalys If /libè un link simbolico per /usr/libinserire un file e /usr/libinserirlo /lib, poiché quelli sono la stessa directory! In poche parole, all'inizio non ha funzionato perché il caricatore mantiene una cache dei contenuti di /libe /usr/lib, e ha iniziato a funzionare quando la cache è stata ricostruita. L'esecuzione ldconfigricostruisce la cache e potrebbe essere stata eseguita dall'utente o automaticamente, ad esempio da un gestore di pacchetti durante l'installazione di un aggiornamento software.
Gilles 'SO- smetti di essere malvagio' il


-1

Ho anche riscontrato lo stesso errore. Il modo migliore è trovare la differenza tra il contenuto "/" contenuto dell'immagine di salvataggio (live CD) e il contenuto "/ mnt / sysimage".

Il problema è stato risolto copiando / bin e / sbin dalla directory "/" a "/ mnt / sysimage" dove è stato eliminato per errore.

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

-4

si dovrebbe provare a copiare il file .bashrc nella directory home. e aiuterà sicuramente.


3
Questo non ha senso.
Sven
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.