chroot - chroot

редактировать

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

Содержание
  • 1 История
  • 2 Использует
  • 3 Ограничения
  • 4 Графические приложения в chroot
  • 5 Известные приложения
  • 6 Хост Linux виртуальные файловые системы ядра и файлы конфигурации
  • 7 См. также
  • 8 Ссылки
  • 9 Внешние ссылки
История

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

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

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

К 2002 году в статье, написанной Николасом Бойтё, описывалось, как создать тюрьму в Linux

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

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

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

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

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

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

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

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

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

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

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

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

Можно запускать графические приложения в chrooted среде, используя такие методы, как:

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

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

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

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

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

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

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

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

# Смонтировать виртуальные файловые системы ядра TARGETDIR = "/ mnt / chroot" mount -t proc proc $ TARGETDIR / proc mount -t sysfs sysfs $ TARGETDIR / sys mount -t devtmpfs devtmpfs $ TARGETDIR / dev mount -t tmpfs tmpfs $ TARGETDIR / dev / shm mount -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
См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-15 06:15:05
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте