chroot

CHROOT(2)       Ð ÑководÑÑво пÑогÑаммиÑÑа Linux       CHROOT(2)



ÐÐЯ
       chroot - измениÑÑ ÐºÐ¾Ñневой каÑалог

ÐÐÐÐÐ
       #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: не бÑло

ÐÐÐСÐÐÐÐ
       chroot() изменÑÐµÑ ÐºÐ¾Ñневой каÑалог
       вÑзÑваÑÑего пÑоÑеÑÑа на ÑоÑ, ÑÑо задан
       аÑгÑменÑом path. ÐÑÐ¾Ñ ÐºÐ°Ñалог бÑдеÑ
       иÑполÑзоваÑÑÑÑ Ð´Ð»Ñ Ð¸Ð¼Ñн Ñайлов, наÑинаÑÑиÑÑÑ Ñ
       /. ÐоÑневой каÑалог наÑледÑеÑÑÑ Ð²Ñеми
       поÑомками вÑзÑваÑÑего пÑоÑеÑÑа.

       ТолÑко пÑивилегиÑованнÑй пÑоÑеÑÑ (Linux: Ñ
       мандаÑом CAP_SYS_CHROOT в ÑвоÑм полÑзоваÑелÑÑком
       пÑоÑÑÑанÑÑве имÑн) Ð¼Ð¾Ð¶ÐµÑ Ð²ÑзваÑÑ chroot().

       ÐÑÐ¾Ñ Ð²Ñзов изменÑÐµÑ ÑолÑко ÑоÑÑавлÑÑÑÑÑ Ð¿ÑоÑеÑÑа
       ÑазÑеÑÐµÐ½Ð¸Ñ Ð¸Ð¼Ñн и болÑÑе ниÑего. Ð ÑаÑÑноÑÑи,
       он не пÑедназнаÑен Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑвий повÑÑениÑ
       безопаÑноÑÑи, ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ
       изолиÑованной ÑÑÐµÐ´Ñ Ð¿ÑоÑеÑÑа (sandbox) или
       огÑаниÑÐµÐ½Ð¸Ñ ÑиÑÑемнÑÑ Ð²Ñзовов Ñайловой
       ÑиÑÑемÑ. РпÑоÑлом, chroot() иÑполÑзовалÑÑ
       ÑлÑжбами Ð´Ð»Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð¸Ñ ÑÐ°Ð¼Ð¸Ñ Ð¿ÐµÑедаÑи
       полÑÑеннÑÑ Ð¾Ñ Ð½ÐµÐ´Ð¾Ð²ÐµÑеннÑÑ Ð¿Ð¾Ð»ÑзоваÑелей
       пÑÑей ÑиÑÑемнÑм вÑзовам наподобие open(2).
       Ðднако, еÑли каÑалог пеÑемеÑаеÑÑÑ Ð·Ð°
       пÑÐµÐ´ÐµÐ»Ñ ÐºÐ°Ñалога chroot, аÑакÑÑÑий можеÑ
       иÑполÑзоваÑÑ ÑÑо в ÑÐ²Ð¾Ð¸Ñ Ð¸Ð½ÑеÑеÑÐ°Ñ Ð¸ Ñакже
       вÑйÑи за пÑÐµÐ´ÐµÐ»Ñ ÐºÐ°Ñалога chroot. ÐÑоÑÑейÑий
       ÑпоÑоб ÑделаÑÑ ÑÑо â  Ð²ÑполниÑÑ chdir(2) в
       каÑалог, коÑоÑÑй бÑÐ´ÐµÑ Ð¿ÐµÑемеÑÑн, подождаÑÑ,
       когда он пеÑемеÑÑиÑÑÑ, а заÑем оÑкÑÑÑÑ Ð¿ÑÑÑ,
       напÑÐ¸Ð¼ÐµÑ ../../../etc/passwd.

       ÐÑли chdir(2) не ÑазÑеÑÑн, Ñо еÑÑÑ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾ более
       ÑиÑÑÑй ваÑианÑ, ÑабоÑаÑÑий пÑи опÑеделÑннÑÑ
       ÑÑловиÑÑ. ÐÑли ÑлÑжба позволÑÐµÑ Ð·Ð°Ð´Ð°ÑÑ Â«chroot в
       каÑалог», Ñо обÑÑно ÑÑо ознаÑаеÑ, ÑÑо еÑли вÑ
       ÑоÑиÑе пÑедоÑвÑаÑиÑÑ Ð´Ð¾ÑÑÑп к Ñайлам ÑдалÑннÑÑ
       полÑзоваÑелей вне каÑалога chroot, Ñо вÑ
       Ð´Ð¾Ð»Ð¶Ð½Ñ Ð³Ð°ÑанÑиÑоваÑÑ, ÑÑо каÑалоги никогда
       не пеÑемеÑаÑÑÑÑ Ð·Ð° его пÑеделÑ.

       ÐаннÑй вÑзов не изменÑÐµÑ ÑекÑÑий ÑабоÑий
       каÑалог, поÑÑÐ¾Ð¼Ñ Ð¿Ð¾Ñле вÑзова '.' можеÑ
       оказаÑÑÑÑ Ð²Ð½Ðµ деÑева, ÑвлÑÑÑегоÑÑ ÐºÐ¾Ñнем '/'. Ð
       ÑаÑÑноÑÑи, ÑÑпеÑполÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ Ð²ÑйÑи за
       пÑÐµÐ´ÐµÐ»Ñ "ÑÑÑÑÐ¼Ñ chroot" вÑполнив:

           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) коÑневой каÑалог
       оÑÑаÑÑÑÑ Ð½ÐµÐ¸Ð·Ð¼ÐµÐ½Ð½Ñм.

       Ð FreeBSD еÑÑÑ Ð±Ð¾Ð»ÐµÐµ огÑаниÑиваÑÑий ÑиÑÑемнÑй
       вÑзов jail().

СÐÐТРÐТРТÐÐÐÐ
       chdir(2), pivot_root(2), path_resolution(7)



Linux                             2016-07-17                         CHROOT(2)