chroot

CHROOT(2)                  Linux-Programmierhandbuch                 CHROOT(2)



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.

       Der magische symbolische Link /proc/[PID]/root kann zur Auffindung des
       magischen Verzeichnisses des Prozesses verwandt werden; siehe proc(5)
       für Details.

       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 5.03 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>.



Linux                            6. März 2019                       CHROOT(2)