ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Команда Chroot в Linux с примерами

Команда Chroot в Linux с примерами

В этой статье будет объяснена команда chroot Linux на реальных примерах.

Команда chroot в Linux — это сокращение от «change root». Мы используем его для изменения видимого корневого каталога запущенного процесса и его дочерних элементов. Chroot запускает команду с указанным корневым каталогом и выполняется суперпользователем, широко известным как пользователь root во многих системах Linux. В следующих параграфах мы объясним синтаксис команды, опишем параметры команды более подробно и покажем вам примеры из реальной жизни, ежедневно используемые системными администраторами Linux.

 

Предварительные условия

 

Синтаксис команды Chroot в Linux

Синтаксис команды chroot следующий:

chroot option newroot [command [args]…]

 

Chroot меняет корневой каталог на каталог newroot  на сервере, который должен существовать. Затем он меняет рабочий каталог на / и, наконец, запускает команду с необязательными аргументами. Мы рассмотрим это более подробно в следующих параграфах:

 

Параметры Chroot в Linux

Команда chroot принимает несколько опций:

 

Примеры Chroot в Linux

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

Давайте перейдем к реальному примеру и создадим новый изолированный корневой каталог на нашем сервере, расположенный в каталоге home.

mkdir -p /home/jail/

 

После создания каталога нам нужно создать пару каталогов из каталога /. Давайте сначала перечислим содержимое каталога /:

ls -al /

 

Вы должны получить следующий вывод:

root@host:/# ls -al /
total 76
drwxr-xr-x  20 root root  4096 Mar  3 04:13 .
drwxr-xr-x  20 root root  4096 Mar  3 04:13 ..
lrwxrwxrwx   1 root root     7 Aug  3  2023 bin -> usr/bin
drwxr-xr-x   3 root root  4096 Mar  4 04:12 boot
dr-xr-xr-x   2 root root  4096 Aug 11  2023 cdrom
drwxr-xr-x  19 root root  3960 Mar  3 08:29 dev
drwxr-xr-x 107 root root  4096 Mar  5 04:14 etc
drwxr-xr-x   2 root root  4096 Jan 18 04:29 home
lrwxrwxrwx   1 root root     7 Aug  2  2023 lib -> usr/lib
lrwxrwxrwx   1 root root     9 Aug  2  2023 lib32 -> usr/lib32
lrwxrwxrwx   1 root root     9 Aug  2  2023 lib64 -> usr/lib64
lrwxrwxrwx   1 root root    10 Aug  2  2023 libx32 -> usr/libx32
drwx------   2 root root 16384 Jan 16 04:22 lost+found
drwxr-xr-x   2 root root  4096 Aug  2  2023 media
drwxr-xr-x   2 root root  4096 Aug  2  2023 mnt
...

 

Теперь давайте выберем один каталог из этого списка, например, bin, и создадим его в новом корневом каталоге:

mkdir -p /home/jail/bin/

 

После создания скопируйте bash из /bin в новый корень тюрьмы /home/jail/bin/.

rsync -Waq /bin/bash /home/jail/bin

Далее необходимо скопировать необходимые библиотеки в каталог /home/jail/. Чтобы проверить эти библиотеки, выполните следующую команду:

ldd /bin/bash

 

Скопируйте их в /home/jail/lib64/.

rsync -Waq /lib/x86_64-linux-gnu/libtinfo.so.6 /lib/x86_64-linux-gnu/libc.so.6 /lib64/ld-linux-x86-64.so.2 /home/jail/lib64

 

Далее необходимо выполнить chroot в новый изолированный каталог:

chroot /home/jail/ /bin/bash

 

Вот и все. Теперь пользователь видит каталог /home/jail в качестве корневого каталога. Конечно, вам не обязательно создавать заключенные roots в одиночку.

 

Заключение

ПС. Если вам понравился этот пост о командах chroot Linux с примерами, поделитесь им с друзьями в социальных сетях или оставьте комментарий в разделе комментариев. Спасибо.

Exit mobile version