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 /
Майк Аткінсон

Відповіді:


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 не існує. Чи було б занадто нахабним запитати список команд? Я розумію посилання на символи та як їх створити, але мене дуже бентежить те, що відбувається тут, і те, що ви пропонуєте виправити. Дуже дякую за вашу допомогу!
Майк Аткінсон

1
@Mike: Подивіться на ваші cpкоманди: ви скопіювали файли з /lib64базової системи /libв chroot. Але bash binary все ще шукаютьld-linux-x86-64.so.2 дюйм /lib64(який ви не створили), а НЕ /lib. Ви вбережете себе від головного болю, зробивши /libі /lib64еквівалент в chroot, тому біжіть ln -s lib /usr/chroot/lib64. Щодо того, чому повідомлення про помилку стосується, bashа не про це ld-linux-x86-64.so.2, дивіться мій перший параграф.
Жил 'ТАК - перестань бути злим'

Це прекрасно працює, дуже дякую, що знайшли час, це дуже цінується!
Майк Аткінсон

Чудова відповідь. У моєму випадку проблема була викликана rsync без прапора збереження посилань
gtsouk

1
@miyalys Якщо /libє символьним посиланням на те, щоб /usr/libпотім помістити файл/usr/lib він ставить його /lib, оскільки це той самий каталог! У натхненням, він не зробив роботу в перший , так як завантажувач зберігає кеш вмісту /libі /usr/lib, і він почав працювати , коли кеш був відновлений. Запуск ldconfigвідновлює кеш, і це може бути зроблено вами або автоматично, наприклад, менеджером пакунків, коли ви встановили оновлення програмного забезпечення.
Жил "ТАК - перестань бути злим"


-1

Я також зіткнувся з тією ж помилкою. Найкращий спосіб - знайти різницю між вмістом рятувального зображення (живий компакт-диск) та вмістом "/ mnt / sysimage".

Проблема була вирішена шляхом копіювання / bin та / sbin з каталогу "/" в "/ mnt / sysimage", де вона була випадково видалена.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.