Jump to content

chroot

chroot
Оригинальный автор(ы) Билл Джой , AT&T Bell Laboratories
Разработчик(и) Различные с открытым исходным кодом и коммерческие разработчики разработчики
Первоначальный выпуск 1979 год ; 45 лет назад ( 1979 )
Операционная система Unix , Unix-подобные , Plan 9 , Inferno
Платформа Кросс-платформенный
Тип Команда

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

История [ править ]

Системный вызов chroot был введен во время разработки версии 7 Unix в 1979 году. Один источник предполагает, что Билл Джой добавил его 18 марта 1982 года — за 17 месяцев до выпуска 4.2BSD — чтобы протестировать систему установки и сборки. [1] Все версии BSD, имеющие ядро, имеют chroot(2). [2] [3] Первое использование термина «тюрьма» применительно к chroot принадлежит Биллу Чесвику, создавшему приманку для наблюдения за хакером в 1991 году. [4]

Первая статья о побеге из тюрьмы обсуждалась в колонке безопасности SunWorld Online, написанной Кэрол Феннелли; выпуски за август 1999 г. и январь 1999 г. охватывают большую часть тем, связанных с chroot(). [5]

Чтобы сделать ее полезной для виртуализации , FreeBSD расширила эту концепцию и в версии 4.0 в 2000 году представила команду Jail . [6]

В 2002 году в статье Николя Бойто описывалось, как создать тюрьму в Linux. [7]

К 2003 году первые интернет-провайдеры микросервисов с тюрьмами Linux предоставили услуги SAAS/PAAS (контейнеры оболочки, прокси, ircd, боты и т. д.), счета за потребление в тюрьме в зависимости от использования. [8]

К 2005 году Sun выпустила Solaris Containers (также известный как Solaris Zones), описанный как «chroot на стероидах». [9]

К 2008 году LXC (на основе которого позже был создан Docker ) принял терминологию «контейнера». [10] и приобрел популярность в 2013 году благодаря включению в ядро ​​Linux 3.8 пользовательских пространств имен . [11]

Использует [ править ]

Среду chroot можно использовать для создания и размещения отдельной виртуализированной копии программной системы. Это может быть полезно для:

Тестирование и разработка
В chroot можно настроить тестовую среду для программного обеспечения, развертывание которого в производственной системе в противном случае было бы слишком рискованным.
Контроль зависимостей
Программное обеспечение можно разрабатывать, собирать и тестировать в chroot, заполненном только ожидаемыми зависимостями. Это может предотвратить некоторые виды перекоса связей, которые могут возникнуть в результате создания проектов разработчиками с различными наборами установленных программных библиотек.
Совместимость
Устаревшее программное обеспечение или программное обеспечение, использующее другой ABI, иногда необходимо запускать в chroot, поскольку в противном случае их вспомогательные библиотеки или файлы данных могут конфликтовать по имени или связям с библиотеками хост-системы.
Восстановление
Если система становится незагружаемой, можно использовать chroot для возврата в поврежденную среду после загрузки из альтернативной корневой файловой системы (например, с установочного носителя или Live CD ).
Разделение привилегий
Программам разрешено переносить открытые файловые дескрипторы (для файлов, конвейеров и сетевых подключений) в chroot, что может упростить конструкцию тюрьмы, избавляя от необходимости оставлять рабочие файлы внутри chroot-каталога. Это также упрощает общепринятую схему запуска потенциально уязвимых частей привилегированной программы в «песочнице», чтобы упреждающе сдержать нарушение безопасности. Обратите внимание, что chroot не обязательно достаточен для размещения процесса с привилегиями root.

Ограничения [ править ]

Механизм chroot не предназначен для защиты от преднамеренного вмешательства со стороны привилегированных (root) пользователей. Заметным исключением является NetBSD , в котором chroot считается механизмом безопасности, и экранирование не известно. В большинстве систем контексты chroot не складываются должным образом, и программы с достаточными привилегиями могут выполнить второе chroot для выхода. Чтобы снизить риск этих недостатков безопасности, chrooted-программы должны отказаться от привилегий root как можно скорее после chrooting или другие механизмы, такие как тюрьмы FreeBSD вместо этого следует использовать . Обратите внимание, что некоторые системы, такие как FreeBSD , принимают меры предосторожности, чтобы предотвратить повторную атаку chroot. [12]

В системах, поддерживающих узлы устройств в обычных файловых системах, пользователь root с chroot все равно может создавать узлы устройств и монтировать на них файловые системы; таким образом, механизм chroot сам по себе не предназначен для блокировки низкоуровневого доступа к системным устройствам со стороны привилегированных пользователей. Он не предназначен для ограничения использования таких ресурсов, как ввод-вывод , пропускная способность, дисковое пространство или время процессора. Большинство Unix-систем не полностью ориентированы на файловую систему и оставляют потенциально разрушительные функции, такие как работа в сети и управление процессами, доступными через интерфейс системных вызовов для chrooted-программы.

При запуске программы ожидают найти рабочее пространство , файлы конфигурации, узлы устройств и общие библиотеки в определенных предустановленных местах. Для успешного запуска chroot-программы каталог chroot должен быть заполнен минимальным набором этих файлов. Это может затруднить использование chroot в качестве общего механизма песочницы. Такие инструменты, как Jailkit, могут помочь упростить и автоматизировать этот процесс.

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

Некоторые Unix-системы предлагают расширения механизма chroot для устранения хотя бы некоторых из этих ограничений (см. Реализации технологии виртуализации на уровне операционной системы ).

Графические приложения в chroot [ править ]

Графические приложения можно запускать в chroot-окружении, используя такие методы, как: [13] [14]

  • Используйте xhost (или скопируйте секрет из .Xauthority).
  • Вложенные X-серверы, такие как Xnest или более современный Xephyr (или запуск настоящего X-сервера из тюрьмы)
  • Доступ к chroot через SSH с использованием функции пересылки X11 (ssh -X).
  • xchroot расширенная версия chroot для пользователей и переадресация Xorg/X11 (socat/mount)
  • Сервер X11 VNC и подключение клиента VNC вне среды.
  • Atoms — это инструмент управления Chroot Linux с удобным графическим интерфейсом. [15]

Известные приложения [ править ]

Агент передачи почты Postfix работает как конвейер индивидуально внедренных вспомогательных программ.

Как и в предыдущей версии 4.2BSD, внутренние фермы сборки пакетов Debian и Ubuntu широко используют chroot для обнаружения непреднамеренных зависимостей сборки между пакетами. SUSE использует аналогичный метод в своей программе сборки . Fedora, Red Hat и различные другие дистрибутивы на основе RPM собирают все RPM с помощью инструмента chroot, такого как макет .

Многие FTP-серверы для систем POSIX используют механизм chroot для изоляции ненадежных FTP-клиентов. Это можно сделать, разветвив процесс для обработки входящего соединения, а затем переместив дочерний процесс в chroot (чтобы избежать необходимости заполнять chroot библиотеками, необходимыми для запуска программы).

Если разделение привилегий включено, демон OpenSSH выполнит chroot непривилегированного вспомогательного процесса в пустой каталог для обработки сетевого трафика предварительной аутентификации для каждого клиента. Демон также может изолировать сеансы SFTP и оболочки в chroot (начиная с версии 4.9p1). [16]

ChromeOS может использовать chroot для запуска экземпляра Linux с помощью Crouton . [17] предоставление в противном случае тонкой ОС доступа к аппаратным ресурсам. Здесь применимы последствия для безопасности, описанные в этой статье.

Виртуальные файловые системы ядра хоста Linux конфигурации файлы и

Чтобы иметь функциональную среду chroot в Linux, виртуальные файловые системы ядра и файлы конфигурации также необходимо смонтировать/скопировать с хоста в chroot.

# Монтирование виртуальных файловых систем ядра  TARGETDIR  =  "/mnt/chroot" mount   -t   proc   proc   $TARGETDIR  /procmount   -t   sysfs   sysfs   $TARGETDIR  /sysmount   -t   devtmpfs   devtmpfs   $TARGETDIR  /devmount   -t   tmpfs   tmpfs   $TARGETDIR  /dev/shmmount   -t   devpts   devpts   $TARGETDIR  /dev/pts # Копируем /etc/hosts /bin/cp   -f   /etc/hosts   $TARGETDIR  /etc/ # Скопируйте /etc/resolv.conf /bin/cp   -f   /etc/resolv.conf   $TARGETDIR  /etc/resolv.conf # Ссылка на /etc/mtab chroot   $TARGETDIR   rm   /etc/mtab   2  >   /dev/null  chroot   $TARGETDIR   ln   -s   /proc/mounts   /etc/mtab 

См. также [ править ]

Ссылки [ править ]

  1. ^ «тюрьма, отделение 9» . docs.freebsd.org . Архивировано из оригинала 05 января 2017 г. Проверено 14 марта 2016 г.
  2. ^ Лош, Уорнер (2 февраля 2000 г.). «Блог случайного взлома Warner: куда идти chroot?» . Архивировано из оригинала 28 июня 2020 года . Проверено 28 июня 2020 г.
  3. ^ «Инфраструктуры данных для всех нас – III – программное обеспечение» . Архивировано из оригинала 30 июня 2020 г. Проверено 28 июня 2020 г.
  4. ^ Чесвик, Билл (1991). «Вечер с Берфердом: в котором крекера заманивают, выдерживают и изучают» (PDF) . Материалы летней конференции USENIX, Том 1 . УСЕНИКС . Сан-Франциско, Калифорния: Ассоциация. п. 163. Архивировано (PDF) из оригинала 05 ноября 2018 г. Проверено 9 июня 2018 г.
  5. ^ Кэрол, Феннелли. «Летний обед» . SunWorld онлайн . Кэрол Феннелли. Архивировано из оригинала 28 сентября 2021 года.
  6. ^ Риондато, Маттео. «Справочник FreeBSD, глава «Тюрьмы»» . freebsd.org . Проект FreeBSD. Архивировано из оригинала 15 августа 2014 г. Проверено 30 октября 2018 г.
  7. ^ Николя, Буато. «Chroot-оболочка» . lycos.fr . Николя Буато. Архивировано из оригинала 14 октября 2002 г. Проверено 24 марта 2018 г.
  8. ^ «Жирафон» . сайт girafon.org . жирафон. Архивировано из оригинала 12 июня 2004 г. Проверено 24 марта 2018 г.
  9. ^ Шмидт, Клаус (2 сентября 2006 г.). Высокая доступность и аварийное восстановление: концепции, проектирование, реализация . Springer Science & Business Media. п. 186. ИСБН  9783540345824 . Архивировано из оригинала 20 февраля 2023 г. Проверено 21 августа 2014 г.
  10. ^ «Файлы загрузки SourceForge LXC» . sourceforge.net . Архивировано из оригинала 19 августа 2014 г. Проверено 21 августа 2014 г.
  11. ^ Розен, Рами (26 марта 2014 г.). «Контейнеры Linux и облако будущего» (PDF) . Архивировано (PDF) из оригинала 18 апреля 2016 г. Проверено 21 августа 2014 г.
  12. ^ "chroot(2)" . www.freebsd.org . Архивировано из оригинала 18 сентября 2020 г. Проверено 2 декабря 2020 г.
  13. ^ «Разработка/Howto/Chroot» . Мандрива Вики . 25 июля 2011 г. Архивировано из оригинала 26 марта 2014 г.
  14. ^ «КАК запускать x в chroot» . Генту вики . Архивировано из оригинала 31 августа 2011 г. Проверено 13 октября 2011 г.
  15. ^ Дэвид, Редфилд (10 октября 2023 г.). «Atoms — это инструмент управления Chroot Linux с удобным графическим интерфейсом» .
  16. ^ «Страница руководства sshd_config(5)» . 26 октября 2017 г. Архивировано из оригинала 5 февраля 2018 г. Проверено 4 февраля 2018 г.
  17. ^ «Универсальная среда Chroot для Chromium OS (на github)» . Гитхаб . Архивировано из оригинала 25 ноября 2016 г. Проверено 17 декабря 2016 г.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: c70792ef51f1a4c706870e56d50a921c__1703733240
URL1:https://arc.ask3.ru/arc/aa/c7/1c/c70792ef51f1a4c706870e56d50a921c.html
Заголовок, (Title) документа по адресу, URL1:
chroot - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)