Позволяет запустить процесс с подменённым корневым каталогом /, ограничивая ему видимость файловой системы.
🤓 Это самый базовый и древний механизм изоляции в Linux — предок современных контейнеров.
➡️ Как это работает?
— Ядро меняет для процесса значение корневого каталога на указанную директорию
— Процесс и все его дочерние процессы видят эту директорию как /
— Доступ к файлам выше нового корня становится невозможным
— Изоляция работает только на уровне файловой системы — процессы, сеть, PID и пользователи остаются общими с хостом
‼️
chroot — это не песочница и не средство безопасности в полном смысле.Root-процесс внутри chroot может выйти из него через системные вызовы. Для настоящей изоляции используются namespaces, cgroups и контейнеры.
➡️ Базовый синтаксис
chroot [параметры] КАТАЛОГ [КОМАНДА [АРГУМЕНТЫ]]
Если команда не указана — запускается
${SHELL} или /bin/sh.➡️ Основные параметры
—
--userspec=USER:GROUP — выполнить от имени указанного пользователя/группы—
--groups=G_LIST — задать список дополнительных групп—
--skip-chdir — не делать cd / после смены корня1️⃣ Пример
Минимальное окружение для bash
# Создаём структуру
mkdir -p /mnt/user/{bin,lib,lib64}
# Копируем bash
cp /bin/bash /mnt/user/bin/
# Копируем зависимости
ldd /bin/bash | grep -o '/lib.*\.[0-9]*' | xargs -I {} cp {} /mnt/user{}
# Запускаем chroot
sudo chroot /mnt/user /bin/bash
Внутри уже работает только
bash — никаких ls, cat и прочего.2️⃣ Пример
Запуск от имени конкретного пользователя
sudo chroot --userspec=1000:1000 /mnt/user /bin/bash
➡️ Где chroot пригодится:
— Восстановление системы — починка загрузчика, сброс паролей, обновление пакетов с LiveCD
— Сборка пакетов и ПО — изолированное окружение нужной версии дистрибутива (классика для debootstrap, pbuilder, mock)
— Тестирование — проверка установочных скриптов на чистой системе
— Хостинг устаревшего ПО — запуск приложений со старыми зависимостями без конфликтов
— DNS/FTP-серверы — bind9 и vsftpd исторически умеют сами себя помещать в chroot для ограничения области поражения при компрометации
chroot — простой, но мощный инструмент, лежащий в основе многих современных технологий. Понимание его принципов помогает осознать, как устроена изоляция в Docker, LXC и systemd-nspawn — там просто к смене корня добавлены namespaces для PID, сети, IPC и cgroups для ресурсов.#линуксятина
