Chroot

Chroot

chroot

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

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

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

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

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

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

Содержание

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

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

Недостатки

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

Сам по себе механизм chroot не полностью безопасен. Если программа, запущенная в chroot имеет привилегии root, она может выполнить second chroot для того, чтобы выбраться наружу. Это работает потому, что некоторые ядра Unix не позволяют правильного вложения контекстов chroot.

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

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

См. также

Ссылки




Wikimedia Foundation. 2010.

Игры ⚽ Нужен реферат?

Полезное


Смотреть что такое "Chroot" в других словарях:

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

  • chroot — steht für „change root“ und ist eine Funktion auf Unix Systemen, um das Rootverzeichnis zu ändern. Sie wirkt sich nur auf den aktuellen Prozess und seine Kindprozesse aus. „chroot“ selbst kann sich sowohl auf den Systemaufruf chroot(2) als auch… …   Deutsch Wikipedia

  • CHROOT — steht für „change root“ und ist eine Funktion auf Unix Systemen um das Rootverzeichnis zu ändern. Sie wirkt sich nur auf den aktuellen Prozess und seine Kindprozesse aus. „chroot“ selbst kann sich auf den Systemaufruf chroot(2) als auch das… …   Deutsch Wikipedia

  • Chroot — steht für „change root“ und ist eine Funktion auf Unix Systemen um das Rootverzeichnis zu ändern. Sie wirkt sich nur auf den aktuellen Prozess und seine Kindprozesse aus. „chroot“ selbst kann sich auf den Systemaufruf chroot(2) als auch das… …   Deutsch Wikipedia

  • Chroot — Saltar a navegación, búsqueda Chroot en un sistema operativo Unix es una operación que cambia el directorio raíz, afectando solamente al proceso actual y a sus procesos hijos. chroot se refiere a la llamada de sistema chroot(2) o al programa… …   Wikipedia Español

  • chroot — en los sistemas operativos derivados de Unix, es una operación que invoca un proceso, cambiando para este y sus hijos el directorio raíz del sistema. chroot puede referirse a la llamada de sistema chroot(2) o al programa ejecutable chroot(8).… …   Wikipedia Español

  • Chroot — est une commande des systèmes d exploitation UNIX permettant de changer le répertoire racine d un processus de la machine hôte. Sommaire 1 Objectif 2 Outil GNU 3 Voir aussi …   Wikipédia en Français

  • chroot — (change root) est une commande des systèmes d exploitation UNIX permettant de changer le répertoire racine d un processus de la machine hôte. Sommaire 1 Objectif 2 Outil GNU 3 Voir aussi …   Wikipédia en Français

  • chroot — A chroot on Unix operating systems is an operation that changes the apparent root directory for the current running process and its children. A program that is run in such a modified environment cannot name (and therefore normally not access)… …   Wikipedia

  • Chroot — A chroot on Unix operating systems is an operation that changes the apparent disk root directory for the current running process and its children. A program that is re rooted to another directory cannot access or name files outside that directory …   Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»