Thank you for reading this post, don't forget to subscribe!
Как использовать chroot jail
В этом примере показано, как создать и настроить chroot jail, чтобы он мог запускать команды bash и ls.
1 |
mkdir chroot_jail |
Если мы попытаемся войти в новый каталог, мы получим следующий вывод:
1 2 3 4 5 |
chroot chroot_jail chroot: cannot change root directory to 'chroot_jail: Operation not permitted |
1. Создайте новый каталог с именем chroot_jail:
Вы должны включить команду bash, прежде чем сможете выполнить chroot в новый каталог.
Для этого необходимо скопировать командный файл и все связанные библиотеки в новый корневой каталог.
2. Создайте новое дерево подкаталогов внутри chroot_jail:
1 |
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 без указания пути, из которого вы копируете.
Для этого используйте:
1 2 |
cp $(which ls) chroot_jail/bin/ cp $(which bash) chroot_jail/bin/ |
Примечание. Если ваша команда bash или ls имеет алиас, вам необходимо снять его перед копированием. Используйте unalias [команда], где [command] – это имя команды, которую вы хотите удалить.
4. Чтобы bash и ls работали в новой корневой папке, добавьте все связанные библиотеки в chroot_jail/libraries.
Используйте команду ldd, чтобы узнать, какие библиотеки связаны с какой командой:
1 2 |
ldd $(which bash) ldd $(which ls) |
5. Скопируйте соответствующие библиотеки в подкаталоги chroot_jail lib и lib64.
Для команды bash:
1 2 3 4 |
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, чтобы вывести список всех файлов и каталогов в новом корневом дереве каталогов:
ls -R
7. Как только вы закончите использовать новую корневую папку, выйдите из оболочки:
1 |
exit |