bionic (2) chroot.2.gz

Provided by: manpages-de-dev_2.5-1_all bug

BEZEICHNUNG

       chroot - Wurzelverzeichnis wechseln

ÜBERSICHT

       #include <unistd.h>

       int chroot(const char *pfad);

   Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):

       chroot():
           Seit Glibc 2.2.2:
               _XOPEN_SOURCE && ! (_POSIX_C_SOURCE >= 200112L)
                   || /* Seit Glibc 2.20: */ _DEFAULT_SOURCE
                   || /* Glibc-Versionen <= 2.19: */ _BSD_SOURCE
           Bis Glibc 2.2.2: Keine

BESCHREIBUNG

       chroot()  wechselt  das Wurzelverzeichnis des aufrufenden Prozesses in das durch pfad festgelegte. Dieses
       Verzeichnis wird für Pfadnamen verwendet,  die  mit  /  beginnen.  Das  Wurzelverzeichnis  wird  an  alle
       Kindprozesse des aufrufenden Prozesses vererbt.

       Nur  ein privilegierter Prozess kann chroot() aufrufen (Linux: einer mit der Capability CAP_SYS_CHROOT in
       seinem Benutzernamensraum).

       Dieser Aufruf ändert nur eine Komponente im Prozess der  Auflösung  des  Pfadnamens.  Er  ist  weder  für
       irgendwelche   Sicherheitsbelange   gedacht  noch  für  das  Sandboxing  eines  Prozesses  oder  für  die
       Einschränkung von auf das Dateisystem bezogene  Systemaufrufe.  Früher  wurde  chroot()  tatsächlich  von
       Hintergrunddiensten  vor  der Übergabe von Pfaden durch nicht vertrauenswürdige Benutzer an Systemaufrufe
       wie open(2) genutzt. Wie auch immer, wenn ein Verzeichnis an  Orte  außerhalb  des  Chroot-Verzeichnisses
       verschoben  wird,  dann  kann  ein  Angreifer  dies  ausnutzen,  um  ebenso  aus diesem auszubrechen. Der
       einfachste Weg dahin ist, mit  chdir(2)  in  das  zu  verschiebende  Verzeichnis  zu  wechseln,  auf  die
       Verschiebung zu warten und dann einen Pfad wie ../../../etc/passwd zu öffnen.

       Eine  etwas ausgefeiltere Version kann unter bestimmten Umständen auch funktionieren, wenn die Verwendung
       von chdir(2) nicht möglich ist. Wenn  ein  Hintergrunddienst  die  Angabe  eines  »Chroot-Verzeichnisses«
       ermöglicht,  bedeutet  das meist: Wenn Sie entfernte Benutzer daran hindern wollen, auf Dateien außerhalb
       des  Chroot-Verzeichnisses  zuzugreifen,   dürfen   Verzeichnisse   niemals   an   Orte   außerhalb   des
       Root-Verzeichnisses verschoben werden.

       Dieser  Aufruf  ändert nicht das aktuelle Arbeitsverzeichnis, so dass sich '.'  nach dem Aufruf außerhalb
       des Baums mit der Wurzel bei '/' befinden kann. Insbesondere kann der  Superuser  dem  »chroot-Gefängnis«
       entfliehen wie folgt:

           mkdir foo; chroot foo; cd ..

       Dieser  Aufruf  schließt  keine gesöffneten Datei-Deskriptoren. Solche Datei-Deskriptoren könnten Zugriff
       auf Dateien außerhalb des Chroot-Baumes gewähren.

RÜCKGABEWERT

       Bei Erfolg wird Null zurückgegeben. Bei  einem  Fehler  wird  -1  zurückgegeben  und  errno  entsprechend
       gesetzt.

FEHLER

       In  Abhängigkeit  vom  Dateisystem  können andere Fehlerwerte zurückgegeben werden. Die häufigsten Fehler
       sind hier aufgelistet:

       EACCES Eine Komponente des Pfad-Präfix darf nicht durchsucht werden. (Siehe auch path_resolution(7).)

       EFAULT path zeigt aus dem für Sie zugänglichen Adressraum heraus.

       EIO    Es ist ein E/A-Fehler (engl. I/O) aufgetreten.

       ELOOP  Bei der Auflösung von path wurden zu viele symbolische Links gefunden.

       ENAMETOOLONG
              path ist zu lang.

       ENOENT Die Datei existiert nicht.

       ENOMEM Es war nicht genügend Kernelspeicher verfügbar.

       ENOTDIR
              Eine Komponente von path ist kein Verzeichnis.

       EPERM  Der Aufrufende verfügt nicht über ausreichende Privilegien

KONFORM ZU

       SVr4, 4.4BSD, SUSv2 (als ALTLAST markiert). Diese Funktion ist nicht Teil von POSIX.1-2001.

ANMERKUNGEN

       Ein Kindprozess, der mit fork(2) erstellt wurde, erbt das Wurzelverzeichnis seines  Elternprozesses.  Das
       Wurzelverzeichnis wird von execve(2) unverändert gelassen.

       FreeBSD verfügt über einen stärkeren Systemaufruf: jail().

SIEHE AUCH

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

KOLOPHON

       Diese  Seite  ist  Teil  der  Veröffentlichung  4.15  des Projekts Linux-man-pages. Eine Beschreibung des
       Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden
       sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die  deutsche  Übersetzung  dieser  Handbuchseite wurde von Ralf Demmer <rdemmer@rdemmer.de>, Chris Leick
       <c.leick@vollbio.de> und Mario Blättermann <mario.blaettermann@gmail.com> erstellt.

       Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder  neuer
       bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn  Sie  Fehler  in  der  Übersetzung  dieser  Handbuchseite  finden, schicken Sie bitte eine E-Mail an
       <debian-l10n-german@lists.debian.org>.