oracular (2) chroot.2.gz

Provided by: manpages-de-dev_4.23.1-1_all bug

BEZEICHNUNG

       chroot - Wurzelverzeichnis wechseln

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <unistd.h>

       int chroot(const char *Pfad);

   Mit Glibc erforderliche Feature-Test-Makros (siehe feature_test_macros(7)):

       chroot():
           Since glibc 2.2.2:
               _XOPEN_SOURCE && ! (_POSIX_C_SOURCE >= 200112L)
                   || /* Seit Glibc 2.20: */ _DEFAULT_SOURCE
                   || /* Glibc <= 2.19: */ _BSD_SOURCE
           Vor Glibc 2.2.2:
               none

BESCHREIBUNG

       chroot()  wechselt  das  Wurzelverzeichnis des aufrufenden Prozesses in das durch Pfad angegebene. 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
       Wurzelverzeichnisses 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  gesetzt,  um  den
       Fehler anzuzeigen.

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 Pfad 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 Pfad wurden zu viele symbolische Links gefunden.

       ENAMETOOLONG
              Pfad ist zu lang.

       ENOENT Die Datei existiert nicht.

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

       ENOTDIR
              Eine Komponente von Pfad ist kein Verzeichnis.

       EPERM  Der Aufrufende verfügt nicht über ausreichende Privilegien.

STANDARDS

       Keine.

GESCHICHTE

       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)

Ü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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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 die
       Mailingliste der Übersetzer ⟨debian-l10n-german@lists.debian.org⟩.