chroot(2) System Calls Manual chroot(2)

chroot - verander root map

Standard C bibliotheek (libc, -lc)

#include <unistd.h>
int chroot(const char *pad);
Feature Test Macro´s eisen in glibc (zie feature_test_macros(7)):

chroot():

    Vanaf glibc 2.2.2:
        _XOPEN_SOURCE && ! (_POSIX_C_SOURCE >= 200112L)
            || /* Vanaf glibc 2.20: */ _DEFAULT_SOURCE
            || /* Glibc <= 2.19: */ _BSD_SOURCE
    Voor glibc 2.2.2:
        geen

chroot() veranderd de root map naar die opgegeven in pad. Deze map zal gebruikt worden voor pad namen die beginnen met /. De root map wordt geërfd door alle kinderen van het huidige proces.

Slechts een geprivilegieerd proces (Linux: een met de CAP_SYS_CHROOT capaciteit in zijn gebruikers naamruimte) mag chroot() aanroepen.

Deze aanroep verandert een ingredient in het resolutie van het padnaam proces en doet niet meer. In het bijzonder is het niet bedoeld om te worden gebruikt voor elk veiligheid doel, noch om een proces in een zandbak te isoleren noch om bestandssysteem systeem aanroepen te beperken. In het verleden werd chroot() gebruikt door daemons om zichzelf te beperken om paden door te geven die werden opgegeven door niet-vertrouwde gebruikers aan systeem aanroepen zoals open(2). Echter is een map wordt verwijderd uit de chroot-map, dan kan een aanvaller dat gebruiken om ook uit de chroot-map te geraken. Een eenvoudige manier om dat te doen is met chdir(2) naar de de-te-verplaatsen map, wachten totdat die verplaatst is en dan een pad zoals ../../../etc/password te openen.

Een iets lastigere variatie werkt ook onder bepaalde omstandigheden indien chdir(2) niet gebruikt kan worden. Als een daemon toestaat om een "chroot" map op te geven, dan betekent dat veelal dat u wil voorkomen dat gebruikers op een andere computer toegang krijgen tot de bestanden buiten de "chroot" map, dan dient u ervoor te zorgen dat mappen er nooit uit verplaatst worden.

De aanroep verandert de huidige werkmap niet, opdat na de aanroep '.' buiten de boom beginnend bij '/' kan zijn. In het bijzonder, de systeembeheerder kan ontsnappen van een "chroot bak" door uit te voeren:


mkdir foo; chroot foo; cd ..

Deze aanroep sluit open bestandsbeschrijvingen niet, en deze bestandsbeschrijvingen kunnen toegang naar bestanden buiten de chroot boom toestaan.

Bij succes wordt nul teruggegeven. Bij falen wordt -1 teruggegeven en wordt errno overeenkomstig gezet.

Afhankelijk van het bestandsysteem kunnen andere fouten worden teruggegeven. De meer algemene fouten worden hieronder genoemd:

Het zoek toegangsrecht werd geweigerd op een deel van het pad-voorvoegsel. (Zie ook path_resolution(7).)
pad wijst buiten door u toegankelijke adres ruimte.
Een Invoer/Uitvoer fout trad op.
Teveel symbolische koppelingen werden tegengekomen bij het vaststellen van pad.
pad is te lang.
Het bestand bestaat niet.
Onvoldoende kernelgeheugen voorhanden.
Een deel van pad is geen map.
De aanroeper heeft onvoldoende privileges.

Geen.

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

Een kind proces aangemaakt door fork(2) erft de hoofdmap van zijn ouder. De hoofdmap wordt niet veranderd door execve(2).

De magische symbolische koppeling,/proc/pid/root, kan worden gebruikt om de hoofdmap van het process te vinden; zie proc(5) voor details.

FreeBSD heeft een sterkere jair() systeem aanroep.

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

De Nederlandse vertaling van deze handleiding is geschreven door Jos Boersema <joshb@xs4all.nl>, Mario Blättermann <mario.blaettermann@gmail.com> en Luc Castermans <luc.castermans@gmail.com>

Deze vertaling is vrije documentatie; lees de GNU General Public License Version 3 of later over de Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID.

Indien U fouten in de vertaling van deze handleiding zou vinden, stuur een e-mail naar debian-l10n-dutch@lists.debian.org.

2 mei 2024 Linux man-pages 6.8