1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-llthw-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
ex21.md 5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 25.11.2024 03:02 8398775

Перевод текста на русский язык:

Упражнение 21: Файловая система: изменение корневого каталога, chroot

Исходный текст: Exercise 21. Filesystems: changing root directory, chroot

Переводчик: Летающий дракон

Протокол: CC BY-NC-SA 4.0

Гордо использую Google Translate

Позвольте мне начать с цитаты из Википедии:

В Unix-системах chroot — это операция, которая позволяет изменить корневой каталог для текущего запущенного процесса и его потомков. Программы, запущенные в этой изменённой среде, не могут получить доступ к файлам за пределами указанного дерева каталогов. Термин chroot может относиться к системному вызову chroot(2) или к утилите chroot(8). Изменённая среда называется chroot-тюрьмой.

Это означает, что вы можете создать каталог (например, /opt/root), скопировать туда необходимые программы и запустить их. Для таких программ /opt/root/ будет являться корневым каталогом /. Чтобы понять, зачем вам это нужно, прочитайте статью Википедии о chroot chroot.

Пришло время для упражнения. Сейчас вы будете использовать bash для создания минимальной chroot-среды. Для этого вы создадите структуру каталогов и скопируете туда bash и его зависимости.

Теперь вы узнаете, как создать chroot-окружение и войти в него.

Как это сделать

1: sudo -s
2: ldd /bin/bash
3: mkdir -vp /opt/root/bin
4: mkdir -v /opt/root/lib
5: mkdir -v /opt/root/lib64
6: cp -v /bin/bash /opt/root/bin/
7: cp -v /lib/libncurses.so.5 /opt/root/lib/
8: cp -v /lib/libdl.so.2 /opt/root/lib
9: cp -v /lib/libc.so.6 /opt/root/lib
10: cp -v /lib64/ld-linux-x86-64.so.2 /opt/root/lib64
11: chroot /opt/root/

Вау, вы создали свой собственный Linux!

Что вы увидите

user1@vm1:/opt~ sudo -s
root@vm1:/opt# ldd /bin/bash
        linux-vdso.so.1 =>  (0x00007fff17bff000)
        libncurses.so.5 => /lib/libncurses.so.5 (0x00007f4b1edc6000)
        libdl.so.2 => /lib/libdl.so.2 (0x00007f4b1ebc2000)
        libc.so.6 => /lib/libc.so.6 (0x00007f4b1e85f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f4b1f012000)
root@vm1:/opt# mkdir -vp /opt/root/bin
mkdir: created directory `/opt/root'
mkdir: created directory `/opt/root/bin'
root@vm1:/opt# mkdir -v /opt/root/lib
mkdir: created directory `/opt/root/lib'
root@vm1:/opt# mkdir -v /opt/root/lib64
mkdir: created directory `/opt/root/lib64'
root@vm1:/opt# cp -v /bin/bash /opt/root/bin/
`/bin/bash' -> `/opt/root/bin/bash'
root@vm1:/opt# cp -v /lib/libncurses.so.5 /opt/root/lib/
`/lib/libncurses.so.5' -> `/opt/root/lib/libncurses.so.5'
root@vm1:/opt# cp -v /lib/libdl.so.2 /opt/root/lib
`/lib/libdl.so.2' -> `/opt/root/lib/libdl.so.2'
root@vm1:/opt# cp -v /lib/libc.so.6 /opt/root/lib
`/lib/libc.so.6' -> `/opt/root/lib/libc.so.6'
root@vm1:/opt# cp -v /lib64/ld-linux-x86-64.so.2 /opt/root/lib64
`/lib64/ld-linux-x86-64.so.2' -> `/opt/root/lib64/ld-linux-x86-64.so.2'
root@vm1:/opt# chroot /opt/root/

Объяснение

  1. Выполнить bash от имени суперпользователя (root).
  2. Вывести список библиотек, необходимых для bash.
  3. Создать каталоги /opt/root/ и /opt/root/bin/ одной командой. Круто, правда?
  4. Создать каталог /opt/root/lib.
  5. Создать каталог /opt/root/lib64.
  6. Скопировать /bin/bash в /opt/root/bin/.
  7. Скопировать /lib/libncurses.so.5 в /opt/root/lib/.
  8. Скопировать /lib/libdl.so.2 в /opt/root/lib/.
  9. Скопировать /lib/libc.so.6 в /opt/root/lib/.
  10. Скопировать /lib64/ld-linux-x86-64.so.2 в /opt/root/lib64/.
  11. Изменить корневой каталог на /opt/root/.

Дополнительные задания

  • Прочитайте man chroot и man ldd.
  • Скопируйте команду ls в ваш chroot и убедитесь, что она работает правильно.
  • Сложное задание: скопируйте vim в ваш chroot и убедитесь, что он работает правильно.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-llthw-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-llthw-zh.git
oschina-mirror
wizardforcel-llthw-zh
wizardforcel-llthw-zh
master