Scroll to navigation

CHROOT(2) Podręcznik programisty Linuksa CHROOT(2)

NAZWA

chroot - zmiana katalogu głównego

SKŁADNIA

#include <unistd.h>

int chroot(const char *path);

OPIS

chroot zmienia katalog główny 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 bieżącego procesu.

Funkcję chroot(2) może wywołać tylko proces uprzywilejowany (pod Linuksem: ten ze zdolnością CAP_SYS_CHROOT).

Funkcja ta zmienia tylko składniki w procesie rozwiązywania nazw plików i nie robi nic poza tym.

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. w przypadku błędu zwracane jest -1 i odpowiednio ustawiane 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:

Brak praw do przeszukiwania dla składowej ścieżki. (Patrz także path_resolution(2)).
path wskazuje poza dostępną dla użytkownika przestrzeń adresową.
Wystąpił błąd we/wy.
Podczas rozwiązywania path napotkano zbyt wiele dowiązań symbolicznych.
path jest zbyt długie.
Plik nie istnieje.
Brak pamięci jądra.
Składowa ścieżki path nie jest katalogiem.
Efektywny UID nie jest zerem.

ZGODNE Z

SVr4, SVID, 4.4BSD, X/OPEN. Ta funkcja nie jest częścią POSIX.1. SVr4 dokumentuje dodatkowe błędy EINTR, ENOLINK i EMULTIHOP. X/OPEN nie dokumentuje błędów EIO, ENOMEM i EFAULT. Interfejs ten jest oznaczany jako spadek po X/OPEN.

UWAGI

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

ZOBACZ TAKŻE

chdir(2), path_resolution(2)

2004-06-23 Linux 2.6.7