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.