chroot

Поделись знанием:
Перейти к: навигация, поиск

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

Термин chroot может относиться или к концепции изменений корневого каталога, или к системному вызову chroot(2), или к программе chroot(8), что обычно понятно из контекста.

Изменение корневого каталога производится при помощи системного вызова chroot(2). Изменение корневого каталога затрагивает только текущий процесс (то есть процесс, сделавший системный вызов chroot(2)) и всех его потомков. Если требуется запустить некоторую программу с изменённым корневым каталогом, но в данной программе не предусмотрено выполнение вызова chroot(2), используют программу chroot(8). Эта программа принимает в качестве параметров новый корневой каталог и путь к программе. Она сначала сама выполняет вызов chroot(2) для изменения собственного корневого каталога на указанный, а затем запускает программу по заданному пути. Так как изменённый корневой каталог наследуется потомками процессов, программа запускается с изменённым корневым каталогом.

Программа, корень которой был перенесён в другой каталог, не может обращаться к файлам вне этого каталога. Это обеспечивает удобный способ помещения в «sandbox» («песочницу») тестовой, ненадёжной или любой другой потенциально опасной программы. Это также простой способ использования механизма «jail» («тюрьмы»). Но наиболее часто chroot используется для сборки дистрибутивов или отдельных программ как бы в «чистой» среде. См. также bootstrapping.

На практике в chroot сложно поместить программы, ожидающие при запуске найти свободное место на диске, файлы конфигурации, файлы устройств и динамические библиотеки в конкретных местах. Для того чтобы позволить программам запуститься внутри chroot-каталога, необходимо обеспечить их минимальным набором таких файлов, желательно аккуратно выбранным так, чтобы не позволить неумышленный доступ к системе снаружи (например, через файлы устройств или FIFO).

Программам разрешается открывать файловые дескрипторы (для файлов, конвейеров и сетевых соединений) в chroot-е, который может упростить изготовление jail, делая необязательным хранение рабочих файлов внутри каталога chroot. Это также может использоваться как простейшая capability-система, в которой программе явно даётся доступ к ресурсам вне chroot основываясь на дескрипторах, которые содержатся внутри.





Использование

  • Разделение привилегий — chroot может использоваться как упреждающий способ защиты от бреши в безопасности, предотвращая возможного атакующего от нанесения любых повреждений или зондирования системы с помощью скомпрометированной программы. Например, сетевой файловый сервер может делать chroot в тот каталог, из которого он раздаёт файлы сразу после соединения с клиентом. Подобный подход используется MTA Postfix, который разделяет свою работу на конвейер меньших, индивидуально заточённых в chroot программ.
  • Изготовление honeypot-ов — chroot-каталог может быть наполнен таким образом, чтобы симулировать реальную систему с запущенными сетевыми сервисами. Механизм chroot в результате может предотвратить обнаружение атакующими систему с целью компрометации от того, что это является искусственным окружением, или от взлома реальной системы.

Недостатки

Только суперпользователь (root) может выполнять системный вызов chroot(2). Это необходимо для того, чтобы предотвратить атаку со стороны пользователя при помощи помещения setuid-ной программы внутри специально изготовленной chroot jail (например, с ложным файлом /etc/passwd) что будет приводить к тому, что они получат повышение привилегий.

Сам по себе механизм chroot не полностью безопасен. Если программа, запущенная в chroot имеет привилегии root, она может выполнить [web.archive.org/web/20150314231549/www.bpfh.net/simes/computing/chroot-break.html second chroot] для того, чтобы выбраться наружу. Это работает потому, что некоторые ядра Unix не позволяют правильного вложения контекстов chroot.

Большинство систем Unix не полностью ориентированы на файловую систему и оставляют потенциально разрушительную функциональность, такую как сетевую и контроль процессов доступной через интерфейс системных вызовов к программе в chroot.

Механизм chroot сам по себе не умеет осуществлять лимитирования на ресурсы, такие как пропускная способность ввода-вывода, дисковое пространство или время ЦП.

См. также

Напишите отзыв о статье "Chroot"

Ссылки

  • [www.freebsd.org/cgi/man.cgi?query=chroot&sektion=2 chroot(2)] — страница справки man по системным вызовам FreeBSD  (англ.)
  • [www.freebsd.org/cgi/man.cgi?query=chroot&sektion=8 chroot(8)] — страница справки man системного администратора FreeBSD  (англ.)
  • [olivier.sessink.nl/jailkit Jailkit]: Набор утилит для построения chroot-окружений.
  • [www.fedoralinux.ru/content/view/132/1/ Создание chroot окружения в Fedora с помощью yum]
  • Статья «[www.ffnn.nl/pages/articles/linux/setting-up-a-chroot-jail-for-cvs.php Установка Chroot Jail для CVS]»
  • [www.xakep.ru/post/29791/default.asp Русская статья Chroot для SSH]
  • [chrootssh.sourceforge.net/ Chroot Jail для SSH]
  • [www.bpfh.net/simes/computing/chroot-break.html Взлом chroot]
  • [woland.pl.ua/1090-openssh-chroot-v-freebsd/ Настройка OpenSSH chroot в FreeBSD]


Отрывок, характеризующий Chroot

Выражение: «началось! вот оно!» было даже и на крепком карем лице князя Багратиона с полузакрытыми, мутными, как будто невыспавшимися глазами. Князь Андрей с беспокойным любопытством вглядывался в это неподвижное лицо, и ему хотелось знать, думает ли и чувствует, и что думает, что чувствует этот человек в эту минуту? «Есть ли вообще что нибудь там, за этим неподвижным лицом?» спрашивал себя князь Андрей, глядя на него. Князь Багратион наклонил голову, в знак согласия на слова князя Андрея, и сказал: «Хорошо», с таким выражением, как будто всё то, что происходило и что ему сообщали, было именно то, что он уже предвидел. Князь Андрей, запихавшись от быстроты езды, говорил быстро. Князь Багратион произносил слова с своим восточным акцентом особенно медленно, как бы внушая, что торопиться некуда. Он тронул, однако, рысью свою лошадь по направлению к батарее Тушина. Князь Андрей вместе с свитой поехал за ним. За князем Багратионом ехали: свитский офицер, личный адъютант князя, Жерков, ординарец, дежурный штаб офицер на энглизированной красивой лошади и статский чиновник, аудитор, который из любопытства попросился ехать в сражение. Аудитор, полный мужчина с полным лицом, с наивною улыбкой радости оглядывался вокруг, трясясь на своей лошади, представляя странный вид в своей камлотовой шинели на фурштатском седле среди гусар, казаков и адъютантов.
– Вот хочет сраженье посмотреть, – сказал Жерков Болконскому, указывая на аудитора, – да под ложечкой уж заболело.
– Ну, полно вам, – проговорил аудитор с сияющею, наивною и вместе хитрою улыбкой, как будто ему лестно было, что он составлял предмет шуток Жеркова, и как будто он нарочно старался казаться глупее, чем он был в самом деле.
– Tres drole, mon monsieur prince, [Очень забавно, мой господин князь,] – сказал дежурный штаб офицер. (Он помнил, что по французски как то особенно говорится титул князь, и никак не мог наладить.)
В это время они все уже подъезжали к батарее Тушина, и впереди их ударилось ядро.
– Что ж это упало? – наивно улыбаясь, спросил аудитор.
– Лепешки французские, – сказал Жерков.
– Этим то бьют, значит? – спросил аудитор. – Страсть то какая!
И он, казалось, распускался весь от удовольствия. Едва он договорил, как опять раздался неожиданно страшный свист, вдруг прекратившийся ударом во что то жидкое, и ш ш ш шлеп – казак, ехавший несколько правее и сзади аудитора, с лошадью рухнулся на землю. Жерков и дежурный штаб офицер пригнулись к седлам и прочь поворотили лошадей. Аудитор остановился против казака, со внимательным любопытством рассматривая его. Казак был мертв, лошадь еще билась.
Князь Багратион, прищурившись, оглянулся и, увидав причину происшедшего замешательства, равнодушно отвернулся, как будто говоря: стоит ли глупостями заниматься! Он остановил лошадь, с приемом хорошего ездока, несколько перегнулся и выправил зацепившуюся за бурку шпагу. Шпага была старинная, не такая, какие носились теперь. Князь Андрей вспомнил рассказ о том, как Суворов в Италии подарил свою шпагу Багратиону, и ему в эту минуту особенно приятно было это воспоминание. Они подъехали к той самой батарее, у которой стоял Болконский, когда рассматривал поле сражения.
– Чья рота? – спросил князь Багратион у фейерверкера, стоявшего у ящиков.
Он спрашивал: чья рота? а в сущности он спрашивал: уж не робеете ли вы тут? И фейерверкер понял это.
– Капитана Тушина, ваше превосходительство, – вытягиваясь, закричал веселым голосом рыжий, с покрытым веснушками лицом, фейерверкер.
– Так, так, – проговорил Багратион, что то соображая, и мимо передков проехал к крайнему орудию.
В то время как он подъезжал, из орудия этого, оглушая его и свиту, зазвенел выстрел, и в дыму, вдруг окружившем орудие, видны были артиллеристы, подхватившие пушку и, торопливо напрягаясь, накатывавшие ее на прежнее место. Широкоплечий, огромный солдат 1 й с банником, широко расставив ноги, отскочил к колесу. 2 й трясущейся рукой клал заряд в дуло. Небольшой сутуловатый человек, офицер Тушин, спотыкнувшись на хобот, выбежал вперед, не замечая генерала и выглядывая из под маленькой ручки.
– Еще две линии прибавь, как раз так будет, – закричал он тоненьким голоском, которому он старался придать молодцоватость, не шедшую к его фигуре. – Второе! – пропищал он. – Круши, Медведев!
Багратион окликнул офицера, и Тушин, робким и неловким движением, совсем не так, как салютуют военные, а так, как благословляют священники, приложив три пальца к козырьку, подошел к генералу. Хотя орудия Тушина были назначены для того, чтоб обстреливать лощину, он стрелял брандскугелями по видневшейся впереди деревне Шенграбен, перед которой выдвигались большие массы французов.
Никто не приказывал Тушину, куда и чем стрелять, и он, посоветовавшись с своим фельдфебелем Захарченком, к которому имел большое уважение, решил, что хорошо было бы зажечь деревню. «Хорошо!» сказал Багратион на доклад офицера и стал оглядывать всё открывавшееся перед ним поле сражения, как бы что то соображая. С правой стороны ближе всего подошли французы. Пониже высоты, на которой стоял Киевский полк, в лощине речки слышалась хватающая за душу перекатная трескотня ружей, и гораздо правее, за драгунами, свитский офицер указывал князю на обходившую наш фланг колонну французов. Налево горизонт ограничивался близким лесом. Князь Багратион приказал двум баталионам из центра итти на подкрепление направо. Свитский офицер осмелился заметить князю, что по уходе этих баталионов орудия останутся без прикрытия. Князь Багратион обернулся к свитскому офицеру и тусклыми глазами посмотрел на него молча. Князю Андрею казалось, что замечание свитского офицера было справедливо и что действительно сказать было нечего. Но в это время прискакал адъютант от полкового командира, бывшего в лощине, с известием, что огромные массы французов шли низом, что полк расстроен и отступает к киевским гренадерам. Князь Багратион наклонил голову в знак согласия и одобрения. Шагом поехал он направо и послал адъютанта к драгунам с приказанием атаковать французов. Но посланный туда адъютант приехал через полчаса с известием, что драгунский полковой командир уже отступил за овраг, ибо против него был направлен сильный огонь, и он понапрасну терял людей и потому спешил стрелков в лес.