CHROOT(2)

НАЗВАНИЕ
chroot - изменить корневой каталог

ОБЗОР
#include <unistd.h>

int chroot(const char *path);

ОПИСАНИЕ
chroot изменяет корневой каталог на тот, что задан аргументом path. Этот каталог будет использоваться для имен файлов, начинающихся со /. Корневой каталог наследуется всеми потомками текущего процесса. Только суперпользователь может изменять корневой каталог. Заметьте, что этот системный вызов не изменяет текущий рабочий каталог, поэтому . может находиться вне дерева каталогов, начинающегося со /. В частности, суперпользователь может выбраться из-под chroot jail с помощью mkdir foo; chroot foo; cd ...

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
В случае успеха возвращается ноль. При ошибке возвращается -1, а errno устанавливается должным образом.

ОШИБКИ
В зависимости от файловой системы могут появляться другие ошибки. Стандартные ошибки таковы:

EPERM
    Фактический UID не равен нулю.

EFAULT
    path указывает за пределы доступного адресного пространства.

ENAMETOOLONG
    path слишком длинно.

ENOENT
    Файл не существует.

ENOMEM
    Ядру не хватило памяти.

ENOTDIR
    Компонент пути, использованный как каталог в path, в действительности таковым не является.

EACCES
    В одном из каталогов, находящихся по пути к path, запрещен поиск.

ELOOP
    path является зацикленной символической ссылкой, то есть при подстановке возникает ссылка на неё саму.

EIO Произошла ошибка ввода-вывода.

СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, SVID, 4.4BSD, X/OPEN. Эта функция не входит в POSIX.1. SVr4 документирует дополнительные коды ошибок EINTR, ENOLINK и EMULTIHOP. X/OPEN не документирует EIO, ENOMEM и EFAULT. Этот интерфейс помечен как "устаревающий" в X/OPEN.

СМОТРИ ТАКЖЕ
chdir(2)

ПЕРЕВОД
Copyright (C) Alexey Mahotkin <alexm@hsys.msk.ru> 1999