Изменить корневую директорию
#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 системной библиотеки