НАЗВАНИЕ
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.
СМОТРИ ТАКЖЕ
ПЕРЕВОД
Copyright (C) Alexey Mahotkin <alexm [AT] hsys.ru> 1999