Я новичок в 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
)Ответы:
Сообщение об ошибке вводит в заблуждение :
/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
или наоборот.источник
cp
команды: вы скопировали файлы из/lib64
базовой системы в/lib
chroot. Но бинарный бинар все еще ищетld-linux-x86-64.so.2
в/lib64
(который вы не создали), нет/lib
. Вы избавите себя от головной боли, создавая/lib
и/lib64
эквивалентные в chroot, так что бегитеln -s lib /usr/chroot/lib64
. Что касается того, почему сообщение об ошибке примерно,bash
а не оld-linux-x86-64.so.2
, см. Мой первый абзац./lib
- это символическая ссылка для/usr/lib
размещения файла/usr/lib
в/lib
, так как это один и тот же каталог! Вначале это не сработало, потому что загрузчик хранит кэш содержимого/lib
и/usr/lib
, и он начал работать, когда кэш был перестроен. Выполнениеldconfig
перестраивает кэш, и это может быть сделано вами или автоматически, например, менеджером пакетов при установке обновления программного обеспечения.Просто сделай это:
mv /usr/chroot/lib /usr/chroot/lib64
источник
Я также столкнулся с той же ошибкой. Лучший способ - найти разницу между содержимым образа восстановления (live CD) "/" и содержимым "/ mnt / sysimage".
Проблема была решена путем копирования / bin и / sbin из каталога / в каталог / mnt / sysimage, где он был случайно удален.
источник
Попробуйте скопировать файл .bashrc в домашнюю директорию. и это обязательно поможет.
источник