> Linux Reviews > man >

chroot


  1. chroot.2.man


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:11 GMT, October 23, 2013

SVENSKA - cs - SVENSKA - SVENSKA - SVENSKA - ja - nl - pl