Термин chroot jail появился еще в 1992 году но часто используется сегодня. Что же это означает и для чего используется эта операция?
Что такое chroot jail?
Chroot (сокращение от change root) - это операция Unix, которая изменяет видимый корневой каталог на тот, который задан пользователем.
Любой процесс, который вы запускаете после операции chroot
, имеет доступ только к новому определенному корневому каталогу и его подкаталогам. Эта операция широко известна как chroot jail
, поскольку эти процессы не могут читать или писать вне нового корневого каталога.
Для чего используется chroot jail?
Chroot jail используется для создания ограниченной «песочницы» для запуска процесса. Это означает, что процесс не может злонамеренно изменять данные за пределами предписанного дерева каталогов.
Еще одно применение chroot jail - это замена виртуальным машинам. Этот метод называется виртуализацией на уровне ядра и требует меньше ресурсов, чем виртуальные машины. Эта операция позволяет пользователям создавать несколько изолированных инстансов в одной системе.
Как использовать chroot jail
Рассмотрим на примере как создать и настроить chroot jail, чтобы он мог запускать команды bash и ls.
1. Создайте новый каталог с именем chroot_jail
:
mkdir chroot_jail
Если мы попытаемся использовать chroot
на этом каталоге, мы получим следующий вывод:
Вы должны включить команду bash
, прежде чем сможете использовать chroot
на новом каталоге. Для этого необходимо скопировать командный файл и все связанные библиотеки в новый корневой каталог.
2. Создайте новое дерево подкаталогов внутри chroot_jail
:
mkdir -p chroot_jail / bin chroot_jail / lib64 / x86_64-linux-gnu chroot_jail / lib / x86_64-linux-gnu
В этих подкаталогах будут храниться все необходимые элементы команд bash
и ls
.
3. Использование команды cp
с командой which
позволяет копировать команды bash
и ls
без указания пути, из которого вы копируете.
Для этого используйте:
cp $(which ls) chroot_jail/bin/ cp $(which bash) chroot_jail/bin/
Примечание. Если ваша командаbash
илиls
имеет псевдоним, вам необходимо снять его перед копированием. Используйтеunalias [command]
, где[command]
- это имя команды, которую вы хотите удалить.
4. Чтобы bash
и ls
работали в новой корневой папке, добавьте все связанные библиотеки в chroot_jail/libraries
. Используйте команду ldd
, чтобы узнать, какие библиотеки связаны с какой командой:
ldd $(which bash) ldd $(which ls)
5. Скопируйте соответствующие библиотеки в подкаталоги lib
и lib64
.
Для команды bash
:
cp /lib/x86_64-linux-gnu/libtinfo.so.6 chroot_jail/lib/x86_64-linux-gnu/ cp /lib/x86_64-linux-gnu/libdl.so.2 chroot_jail/lib/x86_64-linux-gnu/ cp /lib/x86_64-linux-gnu/libc.so.6 chroot_jail/lib/x86_64-linux-gnu/ cp /lib64/ld-linux-x86-64.so.2 chroot_jail/lib64/
Для команды ls
:
cp /lib/x86_64-linux-gnu/libselinux.so.1 chroot_jail/lib/x86_64-linux-gnu/ cp /lib/x86_64-linux-gnu/libc.so.6 chroot_jail/lib/x86_64-linux-gnu/ cp /lib/x86_64-linux-gnu/libpcre2-8.so.0 chroot_jail/lib/x86_64-linux-gnu/ cp /lib/x86_64-linux-gnu/libdl.so.2 chroot_jail/lib/x86_64-linux-gnu/ cp /lib64/ld-linux-x86-64.so.2 chroot_jail/lib64/ cp /lib/x86_64-linux-gnu/libpthread.so.0 chroot_jail/lib/x86_64-linux-gnu/
6. Используйте команду chroot
, чтобы изменить root на каталог chroot_jail
:
sudo chroot chroot_jail
Примечание. При изменении корневого каталога на каталогchroot_jail
запускается новый экземпляр оболочкиbash
.
Используйте команду ls
, чтобы вывести список всех файлов и каталогов в новом корневом дереве каталогов:
ls -R
7. Как только вы закончите использовать новую корневую папку, выйдите из оболочки:
exit
Заключение
После выполнения этого руководства вы сможете настроить chroot jail вместе с необходимыми ресурсами для запуска процессов и команд в новом корневом каталоге.