chroot

Autres langues

Langue: pl

Version: 2004-06-23 (fedora - 25/11/07)

Section: 2 (Appels système)

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:
EACCES
Brak praw do przeszukiwania dla składowej ścieżki. (Patrz także path_resolution(2)).
EFAULT
path wskazuje poza dostępną dla użytkownika przestrzeń adresową.
EIO
Wystąpił błąd we/wy.
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
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)