chroot
1. chroot.2.man
Manpage of CHROOT
CHROOT
Section: Руководство программиста Linux (2)Updated: 2010-09-20
Index Return to Main Contents
ИМЯ
chroot - изменить корневой каталогОБЗОР
#include <unistd.h>int chroot(const char *path);
Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):
chroot():
-
- Начиная с glibc 2.2.2:
-
_BSD_SOURCE || (_XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) && !(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) - До glibc 2.2.2: не было
ОПИСАНИЕ
chroot() изменяет корневой каталог вызывающего процесса на тот, что задан аргументом path. Этот каталог будет использоваться для имён файлов, начинающихся с /. Корневой каталог наследуется всеми потомками вызывающего процесса.Только привилегированный процесс (Linux: с мандатом CAP_SYS_CHROOT) может вызвать chroot().
Этот вызов изменяет только составляющую процесса разрешения имён и больше ничего.
Данный вызов не изменяет текущий рабочий каталог, поэтому после вызова aq.aq может оказаться вне дерева, являющегося корнем aq/aq. В частности, суперпользователь может выйти за пределы "тюрьмы chroot" выполнив:
mkdir foo; chroot foo; cd ..
Данный вызов не закрывает открытые файловые дескрипторы и поэтому через такие дескрипторы можно получить доступ к файлам за пределами дерева chroot.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении возвращается 0. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.ОШИБКИ
В зависимости от файловой системы могут быть возвращены другие ошибки. Наиболее распространённые ошибки перечислены далее:- EACCES
- Поиск запрещён из-за одного из частей префикса пути (См. также path_resolution(7).)
- EFAULT
- Аргумент path указывает за пределы доступного адресного пространства.
- EIO
- Произошла ошибка ввода-вывода.
- ELOOP
- Во время определения path встретилось слишком много символьных ссылок.
- ENAMETOOLONG
- path слишком длинен.
- ENOENT
- Файл не существует.
- ENOMEM
- Недостаточное количество памяти ядра.
- ENOTDIR
- Компонент path не является каталогом.
- EPERM
- У вызвавшего процесса недостаточно прав.
СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, 4.4BSD, SUSv2 (отмечена как УСТАРЕВШАЯ). Эта функция не входит в POSIX.1-2001.ЗАМЕЧАНИЯ
Дочерний процесс, созданный посредством fork(2), наследует корневой каталог родительского процесса. При вызове execve(2) корневой каталог остаётся неизменным.В FreeBSD есть более ограничивающий системный вызов jail().
СМОТРИТЕ ТАКЖЕ
chdir(2), path_resolution(7)
Index
This document was created by man2html using the manual pages.
Time: 17:41:33 GMT, May 11, 2012



