Для ОС Linux існує інструмент, відомий як chroot, який забезпечує простіший і швидший спосіб створення пісочниці програми. За допомогою chroot ви можете встановити та протестувати будь-яку програму, не впливаючи на решту системи.
Ця стаття пояснить, як використовувати chroot у Debian 10 Buster, а також кілька прикладів. Для пояснення ми створимо середовище chroot для bash та деяких команд, таких як команди “ls”, “ip” та “pwd”.
Що таке chroot?
Інструмент chroot - це команда в Linux, яка змінює кореневий каталог програми на інший каталог. Процеси, що працюють у цьому новому кореневому каталозі, не можуть отримати доступ до файлів поза ним. Отже, він ізолює операції додатків від решти системи.
Як працює chroot?
Chroot працює, копіюючи програму та всі її виконувані файли та залежності всередині альтернативного кореневого каталогу. Потім він запускає програму з цього альтернативного кореневого каталогу, змушуючи програму розглядати її як вихідну кореневу директорію. Кореневий каталог - це найпопулярніший каталог в ієрархії, і жодна програма не може досягти вищого рівня, ніж ця директорія, тому саме так chroot ізолює програму від решти системи.
Використовуйте кейси
- Налаштування тестового середовища
- Запуск 32-розрядних програм на 64-розрядної системі
- Запуск старих версій програми на останній версії ОС
- Відновлення паролю
Синтаксис
Нижче наведено основний синтаксис команди chroot:
$ chrootДотримуйтесь наведених нижче кроків, щоб використовувати команду chroot у Debian для налаштування середовища chroot.
1. Створіть альтернативний кореневий каталог
Спочатку створіть альтернативний кореневий каталог, який буде використовуватися для середовища chroot.
$ sudo mkdir ~ / new_rootВищевказана команда створить new_root каталог під Додому каталог, який буде використовуватися як кореневий каталог у середовищі chroot.
2. Додайте основні каталоги
Створіть каталоги “bin”, “lib” та “lib64” під ~ / new_root каталог:
$ sudo mkdir -p ~ / new_root / bin, lib, lib643. Копіювати двійкові файли програми
Усе необхідне для запуску програми в середовищі chroot повинно знаходитися в альтернативному кореневому каталозі. У цій статті ми створимо середовище chroot для bash та деяких команд, включаючи команди “ls”, “ip” та “pwd”. Тому ми скопіюємо двійкові файли з / bin каталог до альтернативного ~ / new_root / bin каталог. Щоб знайти двійкові файли команд, використовуйте команду, яка:
$ котрий bash ls ip pwd
Далі скопіюйте двійкові файли команд у ~ / new_root / bin каталог.
$ sudo cp -v / bin / bash, ls, ip, pwd ~ / new_root / bin
4. Скопіюйте залежності програми
Нам також потрібно буде з’ясувати, які залежності потрібні нашій програмі. Спочатку нам потрібно буде знайти, які це залежності, а потім скопіювати їх до ~ / new_root / lib каталог.
Копіювання залежностей для bash
Спочатку з’ясуйте залежності програми bash:
$ ldd / bin / bash
Потім скопіюйте ці залежності в ~ / new_root / lib каталог.
$ cp -v / lib / x86_64-linux-gnu / libtinfo.так.6, libdl.так.2, libc.так.6 ~ / new_root / libДля файлів / lib64 скопіюйте їх у ~ / new_root / lib64 каталог.
$ cp -v / lib64 / ld-linux-x86-64.так.2 ~ / new_root / lib64Скопіюйте залежності для команди ls
Спочатку з’ясуйте залежності для команди ls:
$ ldd / bin / ls
Потім скопіюйте ці залежності в ~ / new_root / lib каталог.
$ sudo cp -v / lib / x86_64-linux-gnu / libselinux.так.1, libc.так.6, libpcre.так.3,libdl.так.2, libpthread.так.0 / lib64 / ld-linux-x86-64.так.2 ~ / new_root / lib
Для файлів / lib64 скопіюйте їх у ~ / new_root / lib64 каталог.
$ sudo cp -v / lib64 / ld-linux-x86-64.так.2 ~ / new_root / lib64Скопіюйте залежності для команди ip
Спочатку з’ясуйте залежності для команди ip:
$ ldd / bin / ip
Потім скопіюйте ці залежності в ~ / new_root / lib каталог.
$ cp -v / lib / x86_64-linuxgnu / libselinux.так.1, libelf.так.1, libmnl.так.0, libcap.так.2, libdl.так.2, libc.так.6,
libpcre.так.3, libz.так.1, libpthread.так.0 ~ / new_root / lib
Для файлів / lib64 скопіюйте їх у ~ / new_root / lib64 каталог.
$ sudo cp -v / lib64 / ld-linux-x86-64.так.2 ~ / new_root / lib64Скопіюйте залежності для команди pwd
Спочатку з’ясуйте залежності команди pwd:
$ ldd / bin / pwd
Потім скопіюйте ці залежності в ~ / new_root / lib каталог.
$ sudo cp -v / lib / x86_64-linux-gnu / libc.так.6 ~ / new_root / libДля файлів / lib64 скопіюйте їх у ~ / new_root / lib64 каталог.
$ sudo cp -v / lib64 / ld-linux-x86-64.так.2 ~ / new_root / lib64Щоб переглянути всі каталоги в альтернативному кореневому каталозі, використовуйте таку команду:
$ ls -R
5. Перейдіть до альтернативного кореневого каталогу
Тепер ми нарешті готові перейти до нашого нового середовища chroot. Щоб змінити кореневий каталог, запустіть наступну команду в оболонці з кореневими правами:
$ sudo chroot ~ / new_root / bin / bashДе ~ / new_root - це наш альтернативний кореневий каталог і / bin / bash - це програма, яку ми використовували для налаштування середовища chroot.
Після запуску наведеної вище команди ви побачите, що підказка bash змінилася на bash-x.р що в нашому випадку є баш-5.0 (де 5.0 - номер версії bash).
Примітка: після запуску команди chroot ви можете зіткнутися з такою помилкою:
Якщо ця помилка трапляється, переконайтеся, що ви додали всі бібліотеки та виконувані файли, пов'язані з необхідною програмою, до нового кореневого каталогу.
Після входу в середовище chroot ви зможете отримати доступ лише до файлу в ньому. Спробуйте запустити команди, які ви налаштували для свого середовища chroot, включаючи деякі вбудовані команди. Ви можете знайти вбудовані команди, запустивши допомогти команда в оболонці.
Як бачите, ми спробували команди “ls”, “pw” та “ip”, і всі вони досягли успіху. Якщо ми виконаємо будь-яку команду, крім цих трьох команд та вбудованих команд, команда не вдасться, оскільки ми не встановили її для середовища chroot. Як ви можете бачити на наступному скріншоті, ми спробували запустити команди “touch”, “ping” і “clear”, і всі вони не змогли.
6. Вихід із chroot
Щоб вийти з середовища chroot, використовуйте вихід команди.
Висновок
У цій статті ви дізналися, що таке chroot і як він працює в Linux. Ця стаття показала вам покрокову інструкцію про використання chroot у Debian 10 Buster для створення середовища chroot для bash та інших команд. Тепер вам зручно використовувати команду chroot, щоб змінити кореневий каталог процесу та його підпроцеси та ізолювати їх від решти системи.