Видео ролики бесплатно онлайн

Смотреть русский видео

Официальный сайт ruskorinfo 24/7/365

Смотреть видео бесплатно

02.06.2009 17:27

cppmmРабота в chroot.

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

Разумеется, для всего этого(как и многого другого в linux) есть разные способы. Это один из них - работа в песочнице chroot.



Суть идеи проста. Chroot расшифровывается как Change Root, т.е. сменить корень. Благодаря такому манёвру мы получаем независимую систему со своими настройками/утилитами и т.д. Наиболее частое применение этого приёма - замыкание в песочнице потенциально опасных сервисов на сервере, чтобы крякер, взломавший сервис не получил доступ к остальной системе. Но это тема для отдельной статьи.



Итак, к делу.

Создаём chroot-директорию и дерево каталогов для базовой системы.

Есть как минимум три пути: для ленивых, для терпеливых и ещё один для терпеливых. :)

Для ленивых - это просто взять где-нибудь базовую(минимальную) сборку любого дистрибутива(не Ubuntu и подобные). Либо, как вариант, воспользоваться архивом третьей стадии из gentoo. Взять его можно с gentoo.org.

Для терпеливых - скопировать всё, что нужно руками. Тут подробнее.

Для начала надо сделать дерево каталогов: bin boot dev etc home lib mnt opt proc root sbin tmp usr var.

Теперь его надо наполнить. Копируем нужные утилиты из основной системы в соответствующие директории(/bin/bash в /chroot/bin/bash и т.д.). Потом для каждой из них надо будет отследить библиотеки. Делается это с помощью ldd.

 1
2
3
4
5
6
7
8
9
10
11
# ldd /bin/bash | cut -f 2 -d \> | cut -f 1 -d \(



/lib/libncurses.so.5

/lib/i686/cmov/libdl.so.2

/lib/i686/cmov/libc.so.6

/lib/ld-linux.so.2



Эти требуемые библиотеки раскидываем в соответствующие директории в /chroot. В зависимости от дистрибутива, их расположение может быть разным.

Когда все нужные программы и библиотеки будут скопированы, надо будет доукомплектовать всё это разными дополнительными, нужными в работе файлами(конфиги всякие и т.д.). Тут к сожалению, нет однозначного решения, потому как для каждой отдельной утилиты эти файлы различаются и лежат в разных местах. Читаем доки и гуглим ошибки.

Готово.

Третий путь - Читаем главу "Сборка системы" книги LFS и делаем, как там описано.

Так или иначе вы получаете песочницу.

Теперь же начинаем там работать.

Монтируем необходимые для работы виртуальные devfs и procfs.

# mount -t proc none /chroot/proc

# mount -o bind /dev/ /chroot/dev

И, наконец, переходим в chroot-окружение:

# chroot /chroot /bin/bash

Всё. Теперь мы полностью отрезаны от остальной ситемы в созданной нами директории. Тут можно делать всё, что угодно(в зависимости от средств, которые вы туда скопировали). Если там есть компилятор, можно всё, что там находится пересобрать, как угодно, и дособрать новое. Можно проводить эксперименты с опасными скриптами(протестировать знаменитый однострочник на perl ;)).

Это совершенно не повлияет на основную систему.

А если ещё и сделать бекап этого раздела, (cd /chroot && tar -cjvf /backups/chroot.tar.bz2 ./), то после своих ошибок его всегда можно быстро восстановить или откатиться до "контрольной точки".



Но всегда стоит учитывать, что песочница работает с тем же ядром, что и основная система, что накладывает некоторые ограничения. К примеру, если ядро 32-битное, а всё, что в песочнице собрано под 64-битную архитектуру, chroot не заработает. Но если там же собрать 64-битное ядро, можно дописать в grub новый пункт, указав ядро и корневой раздел на созданный нами /chroot.



Это лишь краткое описание и ни в коем случае не руководство к действию. Принцип работы я здесь описал, а дальше всё зависит от вашей фантазии. Я, например, собираю таким образом свои сборки linux. Это проще, чем игры с виртуальными машинами или установка той же LFS или Gentoo с LiveCD - пока что-нибудь в chroot'е компилится, можно тут на welinux.ru пофлудить. :)


Тэги: chroot
+ 19 -
Похожие Поделиться

NucleoFag 02.06.2009 17:43 #
+ 0 -
Неплохо, да. Главное, кратко и вроде все необходимое описано. Имеет смысл лишь выложить ссылку на большой ман по чруту, уже именно ман а не описание. Так, для удобства.
Спасибо за статью! Даешь полезные статьи на welinux.ru!
Brun 02.06.2009 19:59 #
+ 0 -
Частично инфа з LFS. Но собрано компактно и информативно. +1
cppmm 02.06.2009 20:03 #
+ 1 -
Если быть точнее, уже не помню, откуда именно взял. Я и LFS собирал, и Gentoo(там это тоже используется), и ещё много разных источников. Просто после моего коммента в теме про LFS exelens попросил рассказать подробнее. Вот, пришлось отвечать за слова. :)
blackstyle 02.06.2009 20:37 #
+ 5 -
Хорошая статья.
Но нужно помнить, что chroot - устаревший инструмент. В BSD, к примеру, есть jail, ограничивающий не только доступ к файлам, но и к процессам, сети и вообще к машинным ресурсам. Под линекс, кажется, тоже есть нечто подомное, название не скажу, не знаю.
Username 02.06.2009 20:39 #
+ 0 -
jail - страшное название, боюсь бсд теперь :)
blackstyle 02.06.2009 20:46 #
+ 0 -
Вы, видимо, не суеверны. Демоны Вас не страшат :)
Username 02.06.2009 20:53 #
+ -1 -
и против зомби у меня есть... как его... kill -9
blackstyle 02.06.2009 21:32 #
+ 0 -
против клеток - jls и jexec
kampfusbeke 02.06.2009 22:40 #
+ 0 -
против зомби килл вообще не помогает, даже с -9
Username 02.06.2009 22:41 #
+ -1 -
скажем так, рандомно помогает
NucleoFag 02.06.2009 20:46 #
+ 0 -
Хм, не знал... Если название узнаете - скажите! =)
yuretsz 02.06.2009 21:36 #
+ 1 -
aptitude search jail
i jailer - Builds and maintains chrooted environments
i jailtool - Tool to build chroot-jails for daemons
i makejail - Automatically create chroot jails for programs
NucleoFag 02.06.2009 21:42 #
+ 0 -
Спасибо. Не думал что так же называться буит...
cppmm 02.06.2009 20:59 #
+ 1 -
Согласен. jail штука хорошая, но для данной задачи(экспериментов над осью с минимальной тратой ресурсов и времени) уже не подходит. Во-первых из-за сложности настройки(там надо учесть гораздо больше), во-вторых из-за ориентировки совершенно на другое. Т.е. jail - это как раз решение для изолированных серверов(или целых виртуальных ОС) на вебхостинге, к примеру(каждому клиенту по своей ОС). Всвязи с этим увеличивается ещё и требование к железу.

В Linux для такого обычно используют технологию KVM(Kernel Virtual Machine).

Но как я отметил, это тема для отдельной статьи. :)
blackstyle 02.06.2009 21:30 #
+ 0 -
то, что jail якобы сложно или долго настраивать - весьма спорно. Как и потребление им лишних ресурсов.
Username 02.06.2009 21:52 #
+ -1 -
хм, если сможешь, напиши про KVM и XEN, с чем их едят. А то разговоров много, а что да как непонятно
cppmm 03.06.2009 07:18 #
+ 0 -
Посмотрим. Там тема пообширнее. Как время будет, напишу.
assaron 02.06.2009 23:11 #
+ 0 -
а мне кажется, или если в таком чруте написать dd if=/dev/urandom of=/dev/sda, то ничего сильно хорошего не получится?
NucleoFag 02.06.2009 23:13 #
+ 0 -
Ага.
booley 02.06.2009 23:25 #
+ 0 -
Даже если без чрута, все равно ничего хорошего не выйдет
cppmm 03.06.2009 07:19 #
+ 0 -
А если в комп гвоздик 200-ку вбить, тоже никакие пароли с chroot'ами не спасут. :)
Но мы же этого делать не будем?
assaron 03.06.2009 10:56 #
+ 0 -
ну это я к тому, что не любой perl-скрипт можно запускать без боязни в таком окружении ;)
rmnd 03.06.2009 09:31 #
+ 1 -
Спасибо за статью.

Я пользуюсь jailkit (см. статью How to chroot ssh user using Jailkit)
cppmm 03.06.2009 11:08 #
+ 0 -
За ссылочку спасибо. Пригодится.

В хорошем качестве hd видео

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн