В Linux команда chroot
(change root) — временная смена корневого каталога для текущего запущенного процесса и его дочерних процессов.
![Использование в Linux команды chroot](/sites/default/files/images/2024-06/chroot-command-1.png)
Содержание
- Цель выполнения команды
- Установка в Arch Linux
- Синтаксис
- Параметры
- Выходной статус
- Использование в Linux команды chroot
- Заключение
Цель выполнения команды
Команда может выполняться с разными целями. Например, загружаемся с Rescue флешки и чиним поломанную систему или меняем забытый пароль пользователя root
, для чего монтируем корень целевой системы и делаем в него chroot
.
Установка в Arch Linux
oleg@mobile:~:$ yay -S arch-install-scripts
Sync Explicit (1): arch-install-scripts-28-1
разрешение зависимостей...
проверка конфликтов...
Пакеты (1) arch-install-scripts-28-1
Будет загружено: 0,02 MiB
Будет установлено: 0,05 MiB
:: Приступить к установке? [Y/n] y
:: Получение пакетов...
arch-install-scripts-28-1-any 15,8 KiB 60,2 KiB/s 00:00 [###############################################] 100%
(1/1) проверка ключей [###############################################] 100%
(1/1) проверка целостности пакета [###############################################] 100%
(1/1) загрузка файлов пакетов [###############################################] 100%
(1/1) проверка конфликтов файлов [###############################################] 100%
(1/1) проверка доступного места [###############################################] 100%
:: Обработка изменений пакета...
(1/1) установка arch-install-scripts [###############################################] 100%
:: Запуск post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
oleg@mobile:~:$
Синтаксис
$ chroot [ПАРАМЕТР] НОВЫЙ_КОРЕНЬ [КОМАНДА [АРГ]…]
или
$ chroot ПАРАМЕТР
Параметры
--groups=G_LIST
Задать вспомогательные группы как гр1, гр2, …, грN
--userspec=ПОЛЬЗ:ГРУППА
Задать пользователя и группу (ID или именем)
--skip-chdir
Не изменять рабочий каталог на
/
--help
Показать эту справку и выйти
--version
Показать информацию о версии и выйти
Если команда не задана, выполняет $SHELL -i
(по умолчанию: /bin/sh -i
).
Выходной статус
125
Если сама команда
chroot
не удалась126
Если КОМАНДА найдена, но не может быть вызвана
127
Если КОМАНДА не найдена
-
Статус выхода COMMAND в противном случае
Использование команды chroot
Простой пример
Для понимания принципа работы утилиты в каталоге /tmp
создаём новый подкаталог /tmp/newroot
:
oleg@mobile:~:$ mkdir /tmp/newroot
oleg@mobile:~:$
oleg@mobile:~:$ cp /bin/bash /tmp/newroot
oleg@mobile:~:$
oleg@mobile:~:$ sudo chroot /tmp/newroot /bin/bash
oleg@mobile:~:$
В этом примере утилита была использована для изменения корневого каталога на /newroot
и запущена команда /bin/bash
. Это эффективно изолирует запущенный процесс и его дочерние элементы в каталоге /newroot
.
Работа с командой chroot
Команда chroot
в Linux — это мощный инструмент, который изменяет видимый корневой каталог для текущего запущенного процесса и его дочерних процессов. Это означает, что процесс не будет «видеть» каталоги выше нового корневого каталога. Это похоже на создание «песочницы», в которой будет работать ваш процесс, изолированной от остальной системы.
Утилита особенно полезна, когда вы хотите изолировать процесс для тестирования или отладки или когда вы хотите повысить безопасность процесса, ограничив его доступ к остальной части файловой системы.
Возможные трудности
Существуют некоторые потенциальные подводные камни, о которых следует знать. Например, при смене корневого каталога процесс не будет иметь доступа к своему обычному окружению, включая системные библиотеки и файлы конфигурации. Это может привести к сбою процесса, если он полагается на эти ресурсы. Поэтому важно убедиться, что новый корневой каталог содержит все необходимые файлы и каталоги для правильной работы процесса.
Изменение поведения команды
Параметр | Описание | Пример |
---|---|---|
-u | Запускать команду от имени указанного пользователя | chroot -u user /newroot /bin/bash |
-g | Использовать указанную группу для команды | chroot -g group /newroot /bin/bash |
-G | Использовать указанные дополнительные группы для команды | chroot -G group /newroot /bin/bash |
-n | Запрещать изменение любых идентификаторов (пользователя, группы, возможностей) | chroot -n /newroot /bin/bash |
--userspec | Использовать указанную группу пользователя:группу для команды | chroot --userspec=user:group /newroot /bin/bash |
--groups | Использовать указанные дополнительные группы для команды | chroot --groups group /newroot /bin/bash |
--skip-chdir | Не изменять рабочий каталог на / | chroot --skip-chdir /newroot /bin/bash |
Заключение
В этой небольшой вводной статье об использовании команды chroot
приведён пример изменения корневого каталога. Эта возможность уже является мощным инструментом в Linux.
По мере дальнейшего ознакомления с этой утилитой вы изучите её более продвинутое использование: создание chroot
-тюрьмы в целях безопасности, выполнение определённых команд в chroot
-среде и многое другое.