ГлавнаяОперационные системыLinuxКак использовать Chroot в Linux и исправить сломанную систему

Как использовать Chroot в Linux и исправить сломанную систему

Chroot — это утилита Linux/Unix, которая может изменять корневую файловую систему. С помощью команды chrootвы можете легко создать изолированную файловую систему внутри основной файловой системы. Chroot особенно полезен для разделения вашей рабочей и домашней среды или если вы хотите, чтобы тестовая среда тестировала программное обеспечение изолированно.

Читайте также: Что такое Rc Shell и как его установить в Linux

Разница между Chroot и виртуальной машиной

На первый взгляд, вы можете подумать, что chroot похож на виртуальную машину или контейнерная система, такая как Docker. . Это отчасти похоже, но chroot — гораздо более

Разница между Chroot и виртуальной машиной

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

Различные случаи использования Chroot

  1. Изолированная среда сборки в конвейере CI/CD. Chroot используется для создания изолированной среды сборки для приложений в конвейере CI/CD. Это помогает создавать приложение с уникальными зависимостями и полностью изолировано от всех других сред сборки, чтобы исключить потенциальные конфликты.
  2. Отдельная среда разработки и тестирования. Зачастую программное обеспечение, работающее на компьютере разработчика, не работает на устройстве конечного пользователя. Это связано с тем, что в системе разработчика установлено множество инструментов и зависимостей. У нормальных людей на своих машинах не установлены все эти зависимости. Чтобы протестировать программное обеспечение, если оно будет работать на всех устройствах, разработчик или тестировщик может легко создать простую стандартную среду, используя chroot для тестирования своего программного обеспечения.
  3. Снижение риска для разработчикаРазличные случаи использования Chrootограммы, которые взаимодействуют с нашими системными файлами без какой-либо надлежащей изолированной программной среды. Поэтому, если мы допустим ошибку, наше программное обеспечение может легко стереть важные данные с нашего устройства. Чтобы снизить риск такого типа, разработчик часто использует chroot для создания новой рабочей среды, чтобы снизить риск потери данных.
  4. Другая версия одного и того же программного обеспечения. Иногда в целях разработки вам необходимо установить очень старую или очень свежую версию программного обеспечения или зависимости. Но использование такой противоречивой зависимости может испортить вашу систему. Эту ситуацию можно легко преодолеть с помощью chroot-тюрьмы.
  5. Исправить неисправную систему. Если у вас неисправная система, вы можете легко восстановить ее с помощью chroot. Просто загрузите живую среду Linux на устройстве и смонтируйте файловую систему. Используя эту точку монтирования, вы можете запускать различные команды для устранения проблемы. Это обсуждается далее в этом руководстве.
  6. Безопасная работа FTP-сервера. FTP означает протокол передачи файлов. Запуск FTP-сервера дает вам возможность делиться только теми файлами, которые вам нужны. Таким образом, ни один удаленный узел не сможет увидеть файловую систему вашего хоста и получить к ней доступ.

Также читайте: Что такое XDP (экспресс-путь к данным) в Linux

Создание среды Chroot

Это краткое руководство по созданию среды chroot в вашей системе. Вы можете получить подробную информацию в Arch Wiki .

  1. Чтобы создать среду chroot, создайте новый каталог внутри вашей домашней папки. Внутри этой папки в будущем будет присутствовать наша изолированная файловая система. В этом уроке я назвал папку «mte».
mkdir ~/mte
  1. Мы создаем очень минимальную среду Linux. Мы устанавливаем bashкак оболочку внутри среды chroot и устанавливаем ls, rmи touchдля вывода списка, удаления и создавать файлы соответственно. Давайте создадим необходимые каталоги внутри нашего каталога «mte».
cd ~/mte
mkdir bin
mkdir lib
mkdir lib64
  1. Скопируйте необходимые двоичные файлы из обычного каталога «/bin» в среду chroot «~/mte».
cp /bin/bash ~/mte/bin
cp /bin/touch ~/mte/bin
cp /bin/ls ~/mte/bin
cp /bin/rm ~/mte/bin
  1. Копирования двоичных файлов недостаточно. Нам также нужно скопировать их зависимости в папку «mte». Чтобы узнать необходимые зависимости, мы используем команду ldd. Если вы хотите узнать зависимость bash, запустите:
ldd /bin/bash

Вывод приведенной выше команды дает следующий результат.

Chroot Ldd, захваченный самостоятельно
  1. Перечисление этих зависимостей и копирование их одна за другой будет очень медленным и скучным занятием. Поэтому для автоматизации этого процесса мы используем bash-скрипт. Создайте файл с именем «copydependent.sh» и напишите в нем эти команды оболочки.
#Setting the chroot directory
mte="~/mte"
 
# enter your binary name
echo -e "Please enter your binary name \n"
 
#Reading from terminal input
read binaryname
 
# Listing all the dependencies
list="$(ldd /bin/$binaryname | egrep -o '/lib.*\.[0-9]')"
 
# Looping through the dependency list
for i in

Создание среды Chroot

pan>do
cp -v --parents "$i" "${mte}"; done

Давайте рассмотрим, что делает этот скрипт. Сначала этот сценарий оболочки запрашивает двоичное имя, затем он берет это двоичное имя, находит все зависимости этого двоичного файла и сохраняет его внутри переменной списка. Затем он запускает цикл for, который выполняется для каждого элемента списка и копирует зависимость из нашего обычного файла «/bin» в наш chroot-каталог «mte».

Сохраните этот сценарий в другом месте и используйте его при создании новой среды chroot.

Затем измените разрешение скрипта и запустите его внутри терминала.

chmod +x copydependancy.sh
  1. Поскольку все зависимости установлены в нашей системе, давайте активируем нашу среду chroot. Стандартная команда chroot выглядит так:
chroot [-OPTION] [PATH FOR NEW ROOT] [PATH FOR SERVER]

Но для достижения нашей цели мы запускаем следующую команду, чтобы активировать нашу среду chroot.

sudo chroot ~/mte /bin/bash

Приведенная выше команда активирует среду chroot в каталоге «~/mte» и указывает на запуск оболочки bash. Вы можете увидеть изменения в приглашении терминала и теперь можете использовать команды touch, rmи lsдля создания, удаления и отображения файлов соответственно..

Чтобы выйти из среды chroot, выполните команду exit.

Если вы хотите полностью удалить среду chroot, удалите каталог «mte» из вашей файловой системы.

rm -rf ~/mte

Читайте также: Как использовать команду Rm в Linux

Исправить сломанный загрузчик с помощью Chroot

Самое интересное в chroot — это то, что вы можете войти в сломанную систему и запустить внутри нее команду. Таким образом, используя chroot, вы можете легко установить критическое обновление для исправления системы или переустановить весь загрузчик, чтобы устранить проблему.

Хрут Викимедиа

Но для этого у вас должна быть работающая среда Linux. Создайте загрузочный USB-накопитель, загрузив ISO-образ Linux и загрузившись с USB-накопителя. Это дает вам живую среду для работы. Подключите системный раздел для работы с chroot.

sudo mount -t ext4 /dev/sda /mnt

Замените «/dev/sda» на предполагаемое имя системного раздела, с которым вы хотите работать, и позвольте загрузчику grub найти информацию, необходимую для устранения проблемы с загрузчиком.

sudo mount --bind /dev /mnt/dev &&
sudo mount --bind /dev/pts /mnt/dev/pts &&
sudo mount --bind /proc /mnt/proc &&
sudo mount --bind /sys /mnt/sys

Давайте выполним chroot в каталог «/mnt» и войдем в сломанную систему.

sudo chroot /mnt

Установите, проверьте и обновите загрузчик grub в вашей системе. Обязательно используйте правильное имя диска и не копируйте эти команды вслепую.

grub-install /dev/sda
grub-install --recheck /dev/sda
update-grub

Выйдите из оболочки, используя команду выхода, упомянутую ранее. Отключите ранее привязанные каталоги и размонтируйте файловую систему. Выполняйте эти команды последовательно одну за другой.

sudo umount /mnt/sys &&
sudo umount /mnt/proc &&
sudo umount /mnt/dev/pts &&
sudo umount /mnt/dev &&
sudo umount /mnt

Перезагрузите компьютер и отсоедините работающий USB. Когда компьютер загрузится, ваш загрузчик grub засияет как новый, и все должно работать нормально.

Читайте также: Как изменить размер и оптимизировать изображения из терминала Linux

Часто задаваемые вопросы

Безопасен ли Chroot?

Chroot не подразумевает безопасность. Никогда не предполагалось, что он станет таковым. В целях безопасности вы можете используйте SELinux . Если вы поместите кого-то в chroot-каталог, у него не будет доступа к корневой файловой системе, но это не значит, что это сделает вашу систему неуязвимой. Chroot также не означает меньшую безопасность — он просто обеспечивает такой же уровень безопасности, как и ваша основная система. Ни больше, ни меньше.

Каковы ограничения систем Chroot?

Система Chroot не предназначена для защиты от преднамеренного вмешательства со стороны пользователя root. В некоторых системах chroot-программы могут получить достаточные привилегии для создания собственной среды chroot и выхода из chroot-тюрьмы. Chroot не означает полную изоляцию. Обычно вы можете делать все, что захотите, в пользовательском пространстве. Вы можете получить доступ к аппаратным устройствам, смонтировать и прочитать что угодно, при условии, что вам не нужно устанавливать какую-либо другую программу, тогда вам потребуются права root, которых у вас нет.

<раздел class="sc_fs_faq sc_card ">

Почему Chroot называют тюрьмой?

Chroot называется тюрьмой, поскольку создается впечатление, что вы находитесь внутри изолированной среды. Вы можете делать в этой тюрьме

Исправить сломанный загрузчик с помощью Chroot

ния пользователя root. Кроме того, у вас ограниченный набор утилит, предоставленных пользователем root, и вы не можете ничего установить самостоятельно. Из-за всех этих ограничений это называется chroot-тюрьмой.

Часто задаваемые вопросы

Безопасен ли Chroot?

Каковы ограничения систем Chroot?

Почему Chroot называют тюрьмой?

ПОХОЖИЕ СТАТЬИ

Популярные записи