8.6. Изменение корневого каталога: chroot()

8.6. Изменение корневого каталога: chroot()

Текущий рабочий каталог, установленный с помощью chdir() (см. раздел 8.4.1 «Изменение каталога — chdir() и fchdir()»), является атрибутом процесса, таким же, как набор открытых файлов. Он также наследуется новыми процессами.

Менее известным является то, что у каждого процесса есть также текущий корневой каталог. Это именно на этот каталог ссылается имя пути /. В большинстве случаев корневые каталоги процесса и системы идентичны. Однако, суперпользователь может изменить корневой каталог с помощью (как вы догадались) системного вызова chroot():

#include <unistd.h> /* Обычный */

int chroot(const char *path);

Возвращаемое значение равно 0 при успешном завершении и -1 при ошибке.

Как указывает справочная страница GNU/Linux chroot(2), изменение корневого каталога не изменяет текущий каталог: программы, которые должны обеспечить нахождение под новым корневым каталогом, должны также вызвать затем chdir():

if (chroot("/new/root") < 0) /* Установить новый корневой каталог */

 /* обработать ошибку */

if (chdir("/some/dir") < 0) /* Пути даны не относительно нового корневого каталога */

 /* обработать ошибку */

Системный вызов chroot() чаще всего используется для демонов — фоновых программ, которые должны работать в специальном ограниченном окружении. Например, рассмотрите демон Интернета FTP, допускающий анонимный FTP (соединение любого клиента из любого места, без обычных имени пользователя и пароля). Очевидно, такое соединение не должно быть способным видеть все файлы целой системы. Вместо этого демон FTP выполняет chroot() в специальный каталог со структурой, достаточной лишь чтобы позволить ему функционировать. (Например, со своим собственным /bin/ls для перечисления файлов, со своей копией библиотеки С времени исполнения, если она разделяется, и, возможно, со своей копией /etc/passwd и /etc/group для отображения ограниченного набора имен пользователей и групп.)

POSIX не стандартизует этот системный вызов, хотя GNU/Linux и все системы Unix его поддерживают. (Он популярен с V7.) Он специализирован, но при необходимости очень удобен.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

5.9 СМЕНА ТЕКУЩЕГО И КОРНЕВОГО КАТАЛОГА

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

5.9 СМЕНА ТЕКУЩЕГО И КОРНЕВОГО КАТАЛОГА Когда система загружается впервые, нулевой процесс делает корневой каталог файловой системы текущим на время инициализации. Для индекса корневого каталога нулевой процесс выполняет алгоритм iget, сохраняет этот индекс в


Изменение каталога по умолчанию для программ

Из книги Delphi. Учимся на примерах автора Парижский Сергей Михайлович

Изменение каталога по умолчанию для программ Можно изменить предлагаемый системой по умолчанию каталог при установке программ:[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion]"ProgramFilesDir"="C:Program Files""ProgramFilesPath"="C:Program


10.1.28. Получение и изменение текущего каталога

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

10.1.28. Получение и изменение текущего каталога Получить имя текущего каталога можно с помощью метода Dir.pwd (синоним Dir.getwd). Эти имена уже давно употребляются как сокращения от «print working directory» (печатать рабочий каталог) и «get working directory» (получить рабочий каталог). На платформе


Глава 23 Создание поддерева chroot

Из книги Сетевые средства Linux автора Смит Родерик В.

Глава 23 Создание поддерева chroot Каждый сервер в процессе работы читает файлы с диска компьютера, некоторые серверы также записывают файлы на локальный диск. Получив контроль над таким сервером, взломщик может изменить конфигурацию программ, обеспечивая себе базу для


Что такое поддерево chroot

Из книги XSLT автора Хольцнер Стивен

Что такое поддерево chroot Корнем дерева файловой системы Linux является каталог /. Относительно этого каталога определяется путь к любому другому каталогу. При создании поддерева chroot корневой каталог переопределяется; вместо него назначается один из каталогов файловой


Формирование среды chroot

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

Формирование среды chroot Для того чтобы сервер мог работать в рамках поддерева chroot, необходимо в первую очередь сформировать само поддерево. Надо создать требуемые каталоги и скопировать в них системные файлы и файлы сервера. Другими словами, вам следует сформировать в


Запуск сервера в рамках поддерева chroot

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

Запуск сервера в рамках поддерева chroot Если сервер осуществляет вызов функции chroot(), вероятнее всего, что в его конфигурационном файле содержится одна или несколько опций, предназначенных для управления выполнением в рамках поддерева chroot. Например, для ProFTPd предусмотрена


Управление доступом к каталогам поддерева chroot

Из книги Недокументированные и малоизвестные возможности Windows XP автора Клименко Роман Александрович

Управление доступом к каталогам поддерева chroot Поддерево chroot реализует одностороннюю защиту — программы, выполняющиеся в рамках поддерева, не имеют доступа к ресурсам за его пределами. Поэтому вы можете ограничить доступ и в другом направлении. Для этого надо указать в


Запуск сервера BIND в рамках поддерева chroot

Из книги автора

Запуск сервера BIND в рамках поддерева chroot Ранее описывался процесс подготовки сервера к запуску в рамках поддерева chroot. Чтобы лучше понять изложенный выше материал, желательно рассмотреть запуск конкретного сервера в подобном режиме. В качестве примера выберем сервер


Поддержка среды chroot

Из книги автора

Поддержка среды chroot Поддерево chroot представляет собой чрезвычайно полезный инструмент, однако требует выполнения определенных действий по поддержке. Ниже перечислены вопросы, которым администратор должен уделять внимание при поддержке поддерева chroot.• Ротация. Во всех


Выбор корневого узла

Из книги автора

Выбор корневого узла Как вы уже видели, выбрать корневой узел можно при помощи образца выбора «/», как, например:<xsl:template match="/"> <HTML> 


14.2. Смена корневого каталога

Из книги автора

14.2. Смена корневого каталога Хотя в системе имеется один корневой каталог, значение / может меняться для каждого процесса в системе. Это обычно делается для предотвращения доступа к файловой системе со стороны сомнительных процессов (например, демоны ftp, обрабатывающие


13.8.1. Настройка и запуск DNS-сервера в chroot-окружении

Из книги автора

13.8.1. Настройка и запуск DNS-сервера в chroot-окружении Из соображений безопасности рекомендуется запускать все сетевые сервисы в так называемом chroot-окружении (change root). Это файловая система, повторяющая структуру корневой файловой системы, но содержащая только те файлы,


Подразделы корневого раздела

Из книги автора

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


Другие разделы корневого раздела

Из книги автора

Другие разделы корневого раздела Уже была рассмотрена большая часть содержимого корневого раздела реестра HKEY_CLASSES_ROOT — разделы расширения, идентификатора и раздел CLSID, но, кроме них, корневой раздел включает в себя еще несколько разделов, которые стоит описать. Некоторые