chroot()

Изменить корневую директорию

Прототип:

#include <unistd.h>
int chroot( const char *path );

Аргументы:

path
Путь к новой корневой директории.

Библиотека:

libc

Описание:

Функция chroot() делает директорию path корневой, начальной точкой для поиска файлов, чьи имена начинаются с /. Рабочий каталог пользователя не изменяется.

Элемент .. для корневой директории интерпретируется как сама корневая директория. Таким образом, нельзя использовать .. для доступа к файлам вне поддерева, имеющего корень не в корневой директории.

Возвращаемое значение:

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EACCES
Для части префикса пути отсутствует право на поиск.
EBADF
Дескриптор не является корректным.
EFAULT
Аргумент пути указывает на некорректный адрес.
EINTR
Во время выполнения функции chroot() пришел сигнал.
EIO
Во время чтения или записи в файловой системе произошла ошибка ввода/вывода.
ELOOP
Слишком много уровней символических ссылок или префиксов.
EMULTIHOP
Части path требуют перехода на некоторое количество удаленных машин, а файловая система не поддерживает этого.
ENAMETOOLONG
Длина строки path превышает PATH_MAX или часть пути к файлу длиннее NAME_MAX, пока действует _POSIX_NO_TRUNC.
ENOENT
Файл не существует, или аргумент path указывает на пустую строку.
ENOLINK
path указывает на удаленную машину, связь с этой машиной более не активна.
ENOTDIR
Часть префикса пути не является директорией.
EPERM
Эффективный пользователь вызывающего процесса не является суперпользователем.

Классификация:

Legacy Unix

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

chdir()




Предыдущий раздел: Описание API системной библиотеки