jammy (2) chroot.2.gz

Provided by: manpages-pl-dev_4.13-4_all bug

NAZWA

       chroot - zmiana katalogu głównego

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
                   || /* Wersje Glibc <= 2.19: */ _BSD_SOURCE
           Przed glibc 2.2.2: brak

OPIS

       chroot()   changes  the  root directory of the calling process to that specified in path.  This directory
       will be used for pathnames beginning with /.  The root directory is inherited  by  all  children  of  the
       calling process.

       Only  a privileged process (Linux: one with the CAP_SYS_CHROOT capability in its user namespace) may call
       chroot().

       This call changes an ingredient in the pathname resolution process and does nothing else.  In particular,
       it is not intended to be used for any kind of security purpose, neither to fully sandbox a process nor to
       restrict filesystem system calls.  In the past, chroot()  has been used by daemons to restrict themselves
       prior to passing paths supplied by untrusted users to system calls such as open(2).  However, if a folder
       is moved out of the chroot directory, an attacker can exploit that to get out of the chroot directory  as
       well.   The  easiest way to do that is to chdir(2)  to the to-be-moved directory, wait for it to be moved
       out, then open a path like ../../../etc/passwd.

       A slightly trickier variation also works under some circumstances if chdir(2)  is not  permitted.   If  a
       daemon allows a "chroot directory" to be specified, that usually means that if you want to prevent remote
       users from accessing files outside the chroot directory, you must ensure that folders are never moved out
       of it.

       Funkcja  ta  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 `uwięzienia w chroot' wykonując

           mkdir foo; chroot foo; cd ..

       Funkcja ta nie zamyka otwartych deskryptorów plików, więc  takie  deskryptory  plików  mogą  zezwalać  na
       dostęp poza nowym drzewem zakorzenionym w `/'.

WARTOŚĆ ZWRACANA

       Po  pomyślnym  zakończeniu  zwracane  jest zero. Po błędzie zwracane jest -1 i odpowiednio ustawiane jest
       errno.

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. (Patrz 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  The caller has insufficient privilege.

ZGODNE Z

       SVr4, 4.4BSD, SUSv2 (marked LEGACY).  This function is not part of POSIX.1-2001.

UWAGI

       A child process created via fork(2)  inherits its parent's root directory.  The root  directory  is  left
       unchanged by execve(2).

       The  magic  symbolic  link,  /proc/[pid]/root,  can  be  used to discover a process's root directory; see
       proc(5)  for details.

       FreeBSD ma silniejszą funkcję systemową jail().

ZOBACZ TAKŻE

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

O STRONIE

       Angielska wersja tej strony pochodzi z wydania 5.10 projektu Linux man-pages. Opis  projektu,  informacje
       dotyczące   zgłaszania   błędów   oraz   najnowszą   wersję   oryginału   można   znaleźć   pod   adresem
       https://www.kernel.org/doc/man-pages/.

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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.