Изменение корневого каталога — chroot в Unix системах

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 стоит использовать для сборки пакетов под разные системы на одном хосте или для тестирования какого-либо ПО, также он нужен чтобы запуститься со съемного носителя когда на основной машине неработоспособен загрузчик.