Создайте chroot-джейл и скопируйте в него все системные файлы.

Я создаю chroot-тюрьму в Linux, но у меня нет доступа ни к одному системному файлу, например ls/cd/gcc/g++. Какие необходимые файлы libs/bin/systme мне нужно скопировать в мою chroot-тюрьму?


person user1159517    schedule 12.08.2013    source источник


Ответы (2)


Исполняемые файлы, такие как ls/cd/gcc/g++, зависят от разделяемой библиотеки (если только вы не собирали их статически). Итак, что вам нужно сделать, это скопировать все эти общие зависимости библиотеки в соответствующее место в вашу chroot-тюрьму, а также вам нужно найти, что это за общие зависимости. Чтобы узнать, вам нужна помощь от "ldd".

Чтобы увидеть, какие общие зависимости есть у gcc, сделайте следующее:

           ldd /usr/bin/gcc

В моей системе он показывает следующий вывод:

linux-vdso.so.1 =>  (0x00007fffd9bff000)
libc.so.6 => /lib64/libc.so.6 (0x00000030c9c00000)
/lib64/ld-linux-x86-64.so.2 (0x00000030c9800000)

Таким образом, gcc имеет зависимость от стандартной библиотеки c libc.so, и ему также требуется ld (исполняемый загрузчик), поместите эти общие библиотеки в соответствующее место (например, libc под /lib64) в вашу chroot-тюрьму вместе с gcc. Таким образом, gcc может загружать необходимые материалы, пока вы вызываете gcc.

person rakib_    schedule 12.08.2013

Чтобы создать базовую корневую файловую систему на основе Debian (не обязательно на хост-системах на основе Debian), вы можете использовать инструмент debootstrap или multistrap. Я думаю, что есть также эквивалент febootstrap для корневых файловых систем на базе Fedora.

В debootstrap у вас будет полный контроль над тем, какие пакеты должны быть установлены, над базовыми необходимыми пакетами, которые являются пакетами с тегами «Приоритет: обязательный» и «Приоритет: важный». В случае начальных дополнительных пакетов вы несете ответственность за зависимости пакетов.

multistrap — это более новый инструмент, который использует apt и может использовать несколько репозиториев, поэтому решает проблему зависимостей.

Вы также можете выполнить перекрестную загрузку, которая создает корневую файловую систему для другой архитектуры. Это полезно при создании встроенных или виртуализированных систем.

пример команды debootstrap:

debootstrap wheezy rootfs/ http://ftp.us.debian.org/debian

тогда вы можете chroot в него и делать все, что нужно.

Это, безусловно, самый простой способ создания chroot.

person zaadeh    schedule 12.08.2013