Provided by: manpages-pl-dev_4.23.1-1_all bug

NAZWA

       chroot - zmienia katalog główny

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <unistd.h>

       int chroot(const char *path);

   Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):

       chroot():
           Od glibc 2.2.2:
               _XOPEN_SOURCE && ! (_POSIX_C_SOURCE >= 200112L)
                   || /* Od glibc 2.20: */ _DEFAULT_SOURCE
                   || /* glibc <= 2.19: */ _BSD_SOURCE
           Przed glibc 2.2.2:
               brak

OPIS

       chroot() zmienia katalog główny procesu wywołującego na katalog podany w path. Ten katalog będzie używany
       do  nazw ścieżek zaczynających się od /. Katalog główny jest dziedziczony przez wszystkie procesy potomne
       wywołującego procesu.

       Funkcję  chroot(2)  może  wywołać  tylko  proces  uprzywilejowany  (pod  Linuksem:  ten   z   przywilejem
       CAP_SYS_CHROOT w swojej przestrzeni nazw użytkownika).

       To  wywołanie  zmienia  tylko  i  wyłącznie  składnik  procesu rozwiązywania ścieżek. W szczególności nie
       zostało zaprojektowane  w  jakimkolwiek  stopniu  do  celów  bezpieczeństwa,  ani  do  utworzenia  pełnej
       piaskownicy dla procesu, ani do ograniczenia systemu plików wywołaniom systemowym. W przeszłości chroot()
       używały  demony do ograniczenia się, przed przekazaniem ścieżki, otrzymanej od niezaufanych użytkowników,
       wywołaniom systemowym takim jak open(2).  Jednak  jeśli  katalog  jest  przenoszony  z  katalogu  chroot,
       atakujący  może  to wykorzystać i wydostać się również poza katalog chroot. Najłatwiej uczynić to poprzez
       chdir(2) do katalogu mającego być przeniesionego, poczekanie na przeniesienie i otwarcie  ścieżki  takiej
       jak ../../../etc/passwd.

       Nieco  bardziej  skomplikowany  wariant  działa  również  w  pewnych  przypadkach,  gdy chdir(2) nie jest
       dozwolone. Jeśli demon pozwala na określenie „katalogu chroot”, zwykle oznacza to, że jeśli  usiłuje  się
       uniemożliwić użytkownikom zdalnym dostępu do plików spoza katalogu chroot, konieczne jest upewnienie się,
       że katalogi nigdy nie są z niego przenoszone.

       Wywołanie  to  nie  zmienia  bieżącego  katalogu  roboczego,  więc  „.”   może znajdować się poza drzewem
       zakorzenionym w „/”. W szczególności, superużytkownik może uciec z „uwięzienia w chroot” wykonując:

           mkdir foo; chroot foo; cd ..

       Wywołanie to nie zamyka otwartych deskryptorów plików, więc takie deskryptory  plików  mogą  zezwalać  na
       dostęp poza nowym drzewem chroot.

WARTOŚĆ ZWRACANA

       Po  pomyślnym  zakończeniu  zwracane  jest zero. Po błędzie zwracane jest -1 i ustawiane errno, wskazując
       błąd.

BŁĘDY

       Dla niektórych systemów plików mogą być zwracane inne błędy niż opisane poniżej. Najogólniejsze błędy to:

       EACCES Brak praw do przeszukiwania dla składowej ścieżki (zob. także path_resolution(7)).

       EFAULT path wskazuje poza dostępną dla użytkownika przestrzeń adresową.

       EIO    Wystąpił błąd wejścia/wyjścia.

       ELOOP  Podczas rozwiązywania path napotkano zbyt wiele dowiązań symbolicznych.

       ENAMETOOLONG
              path jest zbyt długie.

       ENOENT Plik nie istnieje.

       ENOMEM Brak pamięci jądra.

       ENOTDIR
              Składowa ścieżki path nie jest katalogiem.

       EPERM  Wywołujący jest niewystarczająco uprzywilejowany.

STANDARDY

       Brak.

HISTORIA

       SVr4, 4.4BSD, SUSv2 (oznaczone jako LEGACY - przestarzałe). Funkcja ta nie była częścią POSIX.1-2001.

UWAGI

       Proces potomny utworzony za pomocą fork(2)  dziedziczy  katalog  główny  swojego  procesu  macierzystego.
       Katalog główny jest pozostawiany bez zmiany przez execve(2).

       Do  poznania  katalogu  głównego  procesu  można użyć magicznego dowiązania symbolicznego /proc/pid/root,
       więcej informacji w podręczniku proc(5).

       FreeBSD ma silniejsze wywołanie systemowe jail().

ZOBACZ TAKŻE

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

TŁUMACZENIE

       Autorami polskiego tłumaczenia niniejszej strony podręcznika  są:  Przemek  Borys  <pborys@dione.ids.pl>,
       Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

       Niniejsze  tłumaczenie  jest  wolną  dokumentacją.  Bliższe informacje o warunkach licencji można uzyskać
       zapoznając  się  z  GNU General Public License w wersji 3  lub  nowszej.   Nie   przyjmuje   się   ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy  w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej manpages-pl-
       list@lists.sourceforge.net.

Linux man-pages 6.8                              2 maja 2024 r.                                        chroot(2)