Provided by: manpages-de-dev_4.19.0-7_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

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