Поиск по сайту:
Если хочешь быть счастливым, будь им (К. Прутков).

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

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

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

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

 

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

  • Сервер под управлением Ubuntu 22.04 или любой ОС Linux (CentOS, Debian или AlmaLinux).
  • Привилегии пользователя: пользователь root или не root с привилегиями sudo.

 

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

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

chroot option newroot [command [args]…]

 

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

 

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

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

  • –groups=groups: параметр группы переопределяет дополнительную группу, используемую новым процессом. Если мы хотим отключить дополнительную группу, нам нужно использовать –groups=» и разделять их запятыми.
  • –userspec=user[:group]: эта опция позволяет запустить команду от другого пользователя и/или от другой группы. Если указан пользователь, то группы устанавливаются в соответствии со списком, определенным системой для этого пользователя.
  • –skip-chdir: использование этой опции не приведет к изменению рабочего каталога на/после изменения корневого каталога на newroot внутри chroot. Помните, что эта опция разрешена только в том случае, если новый корень — это какой-то старый каталог на сервере.
Читать  Как округлить до двух знаков после запятой в Bash

 

Примеры 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
...

 

Читать  Заявление if..else в Bash

Теперь давайте выберем один каталог из этого списка, например, 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 с примерами, поделитесь им с друзьями в социальных сетях или оставьте комментарий в разделе комментариев. Спасибо.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
В современном динамичном мире, где технологии развиваются с головокружительной скоростью,…

Спасибо!

Теперь редакторы в курсе.