Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

       chroot - изменить корневой каталог

БИБЛИОТЕКА

       Стандартная библиотека языка C (libc, -lc)

ОБЗОР

       #include <unistd.h>

       int chroot(const char *path);

   Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

       chroot():
           Начиная с glibc 2.2.2:
               _XOPEN_SOURCE && ! (_POSIX_C_SOURCE >= 200112L)
                   || /* Начиная с glibc 2.20: */ _DEFAULT_SOURCE
                   || /* glibc <= 2.19: */ _BSD_SOURCE
           До glibc 2.2.2:
               none

ОПИСАНИЕ

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

       Только  привилегированный процесс (Linux: с мандатом CAP_SYS_CHROOT в своём пользовательском пространстве
       имён) может вызвать chroot().

       Этот вызов изменяет только составляющую процесса разрешения имён и больше  ничего.  В  частности,  он  не
       предназначен  для  действий  повышения  безопасности,  создания  полностью  изолированной  среды процесса
       (sandbox) или ограничения системных вызовов файловой системы. В прошлом, chroot() использовался  службами
       для  ограничения  их  самих  передачи  полученных  от  недоверенных пользователей путей системным вызовам
       наподобие open(2). Однако,  если  каталог  перемещается  за  пределы  каталога  chroot,  атакующий  может
       использовать  это  в  своих интересах и также выйти за пределы каталога chroot. Простейший способ сделать
       это —  выполнить chdir(2) в каталог, который будет перемещён, подождать, когда он переместится,  а  затем
       открыть путь, например ../../../etc/passwd.

       Если  chdir(2)  не  разрешён, то есть немного более хитрый вариант, работающий при определённых условиях.
       Если служба позволяет задать «chroot в каталог», то обычно это означает, что если вы хотите предотвратить
       доступ к файлам удалённых пользователей вне каталога chroot, то вы  должны  гарантировать,  что  каталоги
       никогда не перемещаются за его пределы.

       This  call  does  not change the current working directory, so that after the call '.' can be outside the
       tree rooted at '/'.  In particular, the superuser can escape from a "chroot jail" by doing:

           mkdir foo; chroot foo; cd ..

       Данный вызов не закрывает открытые файловые дескрипторы и поэтому через такие дескрипторы можно  получить
       доступ к файлам за пределами дерева chroot.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       При успешном выполнении возвращается 0. При ошибке возвращается -1, а в errno содержится код ошибки.

ОШИБКИ

       В  зависимости  от файловой системы могут также возвращаться другие ошибки. Общий набор ошибок перечислен
       ниже:

       EACCES Поиск запрещён из-за одного из частей префикса пути (См. также path_resolution(7).)

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

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

       ELOOP  Во время определения path встретилось слишком много символьных ссылок.

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

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

       ENOMEM Недостаточное количество памяти ядра.

       ENOTDIR
              Компонент path не является каталогом.

       EPERM  У вызвавшего процесса недостаточно прав.

СТАНДАРТЫ

       Отсутствуют.

ИСТОРИЯ

       SVr4, 4.4BSD, SUSv2 (отмечена как УСТАРЕВШАЯ). Эта функция не входит в POSIX.1-2001.

ПРИМЕЧАНИЯ

       Дочерний процесс, созданный посредством fork(2), наследует корневой каталог родительского  процесса.  При
       вызове execve(2) корневой каталог остаётся неизменным.

       Магическая символическая ссылка /proc/pid/root может быть использована для обнаружения корневого каталога
       процесса; подробности см. в proc(5).

       В FreeBSD есть более ограничивающий системный вызов jail().

СМОТРИТЕ ТАКЖЕ

       chroot(1), chdir(2), pivot_root(2), path_resolution(7), switch_root(8)

ПЕРЕВОД

       Русский  перевод  этой  страницы  руководства  разработал(и) Azamat Hackimov <azamat.hackimov@gmail.com>,
       Dmitriy  S.  Seregin  <dseregin@59.ru>,  Dmitry  Bolkhovskikh  <d20052005@yandex.ru>,   Katrin   Kutepova
       <blackkatelv@gmail.com>,  Yuri  Kozlov  <yuray@komyakino.ru>,  Иван  Павлов  <pavia00@gmail.com> и Kirill
       Rekhov <krekhov.dev@gmail.com>

       Этот перевод является свободной программной документацией; он распространяется на условиях  общедоступной
       лицензии  GNU  (GNU  General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите  об  этом
       разработчику(ам)   по   его(их)  адресу(ам)  электронной  почты  или  по  адресу  списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                        chroot(2)