chroot окружение — способ запуска программ, системный вызов и просто команда, позволяющая изменить корневой каталог в системе.
chroot окружение и его использование
chroot используется для создания jail и изоляции процессов, а также для сборки пакетов методом debootstrap.
Командой chroot с указанием каталога запускается механизм, создающий систему директорий в этом каталоге идентичную той, что существует в корне . Команда выполняется только от имени суперпользователя.
Например chroot /mnt
ls /
bin boot dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
ls /mnt/
lost+found
chroot /mnt
chroot: failed to run command ‘/bin/bash’: No such file or directory
Как устранить ошибку «chroot: failed to run command ‘/bin/bash’: No such file or directory»
Ошибка возникает из-за отсутствия в каталоге, который делается корневым необходимых библиотек и бинарных файлов. Исправить ошибку можно скопировав файлы хост системы в chroot
cp -a /usr /mnt
cp -a /lib /mnt
cp -a /lib64 /mnt
Нужны библиотеки скопированы, сейчас создаем каталог для бинарных файлов и полностью копируем их в этот каталог
mkdir /mnt/bin
cp -a /bin/* /mnt/bin/
Теперь ошибок быть не должно
chroot /mnt
bash-4.3#
bash-4.3# ls /
bin lib lib64 usr
Каталогов нет, но их можно очень просто создать и подмонтировать, однако стоит учитывать, что в chroot в этом случае будут использоваться каталоги из хост системы
Например, для /proc
bash-4.3# mount -t proc proc /proc
Теперь доступно управление процессами
bash-4.3# ps
PID TTY TIME CMD
21294 ? 00:00:00 bash
21673 ? 00:00:00 bash
21689 ? 00:00:00 ps
Выполнив ps aux можно получить доступ к процессам всей системы, а не только chroot. Это может являться угрозой безопасности. chroot стоит использовать для сборки пакетов под разные системы на одном хосте или для тестирования какого-либо ПО, также он нужен чтобы запуститься со съемного носителя когда на основной машине неработоспособен загрузчик.