dchroot(1) in eine Chroot-Umgebung gelangen

ÜBERSICHT

dchroot [-h|--help | -V|--version | -l|--list | -i|--info | --config | --location] [--directory=Verzeichnis] [-d|--preserve-environment] [-q|--quiet | -v|--verbose] [-c Chroot|--chroot=Chroot | --all] [BEFEHL [ ARG1 [ ARG2 [ ARGn]]]]

BESCHREIBUNG

dchroot ermöglicht dem Benutzer, einen Befehl oder eine Login-Shell in einer Chroot-Umgebung auszuführen. Falls kein Befehl angegeben wurde, wird eine Login-Shell im Home-Verzeichnis des Benutzers innerhalb der Chroot gestartet.

Der Befehl besteht aus einem oder mehreren Argumenten, die in der Standard-Shell des Benutzers mittels der Option -c ausgeführt werden. Dadurch kann Shell-Code in dieses Argument eingebettet werden. Falls mehrere Befehlsoptionen benutzt werden, können sie durch Leerzeichen getrennt verbunden werden. Benutzer sollten darüber Bescheid wissen, dass dies Maskierungsprobleme der Shell mit sich bringt und, falls nötig, schroot verwenden, das derlei Probleme nicht hat.

Das Verzeichnis, in dem der Befehl oder die Login-Shell ausgeführt wird, hängt vom Kontext ab. Eine vollständige Beschreibung finden Sie nachfolgend unter der Option --directory.

Diese Version von Dchroot ist ein Kompatibilitäts-Wrapper um das Programm schroot(1). Es wird für die Rückwärtskompatibilität mit den Befehlszeilenoptionen von Dchroot benutzt, für die zukünftige Nutzung wird aber Schroot empfohlen. Lesen Sie den nachfolgenden Abschnitt »Inkompatibilitäten«, um etwas über bekannte Inkompatibilitäten mit älteren Versionen von Dchroot zu erfahren.

Falls keine Chroot angegeben wurde, wird der Chroot-Name oder -Alias »default« als Ausweichmöglichkeit genommen.

OPTIONEN

dchroot akzeptiert die folgenden Optionen:

Grundlegende Optionen

-h, --help
zeigt eine Zusammenfassung der Hilfe.
-a, --all
alle Chroots auswählen
-c, --chroot=Chroot
gibt eine Chroot an, die benutzt werden soll. Diese Option kann mehrfach verwendet werden, um mehr als eine Chroot anzugeben. In diesem Fall wirkt sie sich ähnlich wie --all aus.
-l, --list
führt alle verfügbaren Chroots auf.
-i, --info
gibt detaillierte Informationen über die angegebenen Chroots aus. Beachten Sie, dass ältere Versionen von Dchroot diese Option nicht enthielten.
-p, --path
gibt den Speicherort (Pfad) der angegebenen Chroots aus.
--config
gibt die Konfigurationen der angegebenen Chroots aus. Dies ist nützlich, um zu testen, ob die benutzte Konfiguration die selbe wie die in der Konfigurationsdatei ist. Sämtliche Kommentare der Originaldatei werden fehlen. Beachten Sie, dass ältere Versionen von Dchroot diese Option nicht enthielten.
--directory=Verzeichnis
wechselt in das Verzeichnis innerhalb der Chroot, bevor der Befehl oder die Login-Shell ausgeführt wird. Falls das Verzeichnis nicht verfügbar ist, wird Dchroot mit einem Fehlerstatus beendet.
Das Standardverhalten ist wie folgt (alle Verzeichnispfade liegen innerhalb der Chroot): Sofern nicht die Option --preserve-environment zum Erhalt der Umgebung benutzt wird, wird die Login-Shell oder der Befehl im Home-Verzeichnis des Benutzers oder / ausgeführt, falls das Home-Verzeichnis nicht verfügbar ist. Wenn die Option --preserve-environment benutzt wird, wird es versuchen, das aktuelle Arbeitsverzeichnis zu verwenden, wiederum mit / als Ausweichmöglichkeit, falls es nicht verfügbar ist. Wenn keines der Verzeichnisse verfügbar ist, wird Dchroot mit einem Fehlerstatus beendet.
-d, --preserve-environment
bewahrt die Umgebung des Benutzers innerhalb der Chroot auf. Standardmäßig wird eine saubere Umgebung benutzt. Diese Option kopiert die ganze Umgebung des Benutzers und setzt sie in der Sitzung.
-q, --quiet
gibt nur wichtige Nachrichten aus.
-v, --verbose
gibt alle Nachrichten aus. Beachten Sie, dass ältere Versionen von Dchroot diese Option nicht enthielten.
-V, --version
gibt Versionsinformationen aus.

Beachten Sie, dass ältere Versionen von Dchroot keine langen Optionen bereitstellten.

INKOMPATIBILITÄTEN

Debian-Dchroot vor Version 0.99.0

  • Protokollnachrichten sind unterschiedlich formuliert und formatiert.
  • su(1) wird nicht länger zum Ausführen von Befehlen in der Chroot benutzt. Dies wird durch Dchroot intern erledigt. Diese Änderung kann kann subtile Unterschiede verursachen. Falls Sie eine Inkompatibilität entdecken, melden Sie diese bitte, damit sie korrigiert werden kann.
  • Dchroot stellt eine eingeschränkte Untermenge der durch schroot umgesetzten Funktionalität bereit, liegt aber immer noch unter Schroot. Daher ist Dchroot immer noch Gegenstand der Schroot-Sicherheitsprüfung, einschließlich PAM-Authentifizierung, Autorisierung und zum Beispiel Sitzungsverwaltung und kann sich daher unter manchen Umständen gegenüber älteren Dchroot-Version leicht anders verhalten.

Debian-Dchroot vor Version 1.5.1

  • Diese Version von Dchroot benutzt schroot.conf, um die Konfiguration für verfügbare Chroots zu speichern, anstatt der geschichtlich benutzten Datei dchroot.conf. Dchroot unterstützt die automatische Migration der dchroot.conf in das schroot.conf-Schlüsseldateiformat mit seiner Option --config aus Versionen von 0.2.2 bis 1.5.0. Die Unterstützung für das alte Format ist nun nicht länger verfügebar.

DSA-Dchroot

Von Debian-Systemadministratoren für das Debian-Projekt betriebene Rechner haben ein dchroot-dsa-Paket, das eine alternative Dchroot-Umsetzung bereitstellt.
  • alle obigen Inkompatibilitäten treffen zu
  • Diese Version von Dchroot hat inkompatible Befehlszeilenoptionen und obwohl einige dieser Optionen unterstützt werden oder sie entsprechende Optionen mit einem anderen Namen hat, wird die Option -c nicht benötigt, um eine Chroot anzugeben. Diese Version von Dchroot kann dieses Verhalten nicht in einer rückwärtskompatiblen Weise umsetzen (da die Standard-Chroot benutzt wird, falls -c weggelassen wird). DSA-Dchroot verwendet das Erste, das keine Option ist, als Chroot, wobei nur eine Chroot auf einmal benutzt werden darf.

RESERVEVERZEICHNISSE

Dchroot wird ein geeignetes Verzeichnis zur Verwendung innerhalb der Chroot auswählen, abhängig davon, ob die Optionen --directory oder --preserve-environment benutzt werden. Wenn ein Verzeichnis explizit angegeben wird, wird wegen der Sicherheit und Konsistenz nur ein Verzeichnis verwendet, während für eine Login-Shell oder einen Befehl mehrere Möglichkeiten ausprobiert werden können. Beachten Sie, dass es, da mehrere Ausweichmöglichkeiten für Befehle berücksichtigt werden, gefährlich ist, Befehle mittels Dchroot auszuführen. Benutzen Sie stattdessen Schroot. Die folgenden Unterabschnitte führen die Abfolge der Ausweichmöglichkeiten für jeden Fall auf. CWD ist das aktuelle Arbeitsverzeichnis, VERZ ist das mit --directory angegebene Verzeichnis.

Login-Shell oder Befehl

Übergang
(Rechner → Chroot)Kommentar

CWD → Passwort Passwortverzeichnis normales Verhalten (falls --directory und --preserve-environment benutzt werden)
CWD → / falls »passwd pw_dir« nicht existiert
FAIL falls / nicht existiert

--preserve-environment benutzt

Übergang
(Rechner → Chroot)Kommentar

CWD → CWD normales Verhalten (falls --preserve-environment benutzt wird)
CWD → / falls CWD nicht existiert
FAIL falls / nicht existiert

--directory benutzt

Übergang
(Rechner → Chroot)Kommentar

CWD → DIRnormales Verhalten
FAILfalls DIR nicht existiert

Unter irgendwelchen Umständen kann es vorkommen, dass keine Reserve existiert.

Fehlersuche

Beachten Sie, dass --debug=Mitteilung die interne Reserveliste anzeigen wird, die für diese Sitzung berechnet wurde.

BEISPIELE

$ dchroot -l␍ verfügbare Chroots: sarge [Vorgabe], sid

$ dchroot -p sid␍ /srv/chroot/sid

$ dchroot -q -c sid -- uname -smr␍ Linux 2.6.16.17 ppc $ dchroot -q -c sid -- "uname -smr"␍ Linux 2.6.16.17 ppc

$ dchroot -q -c sid "ls -1 / | tac | head -n 4"␍ var usr tmp sys

$ dchroot -c sid␍ I: [sid chroot] Login-Shell »/bin/bash« gestartet: $

Benutzen Sie --, um zu ermöglichen, dass Optionen, die mit »-« oder »--« im Befehl beginnen, in der Chroot ausgeführt werden. Dies schützt sie davor, als Optionen für Dchroot selbst interpretiert zu werden. Beachten Sie, dass die erste Zeile auf der Standardfehlerausgabe und die restlichen auf der Standardausgabe wiedergegeben werden. Dies ist beabsichtigt, damit Programmausgaben von in der Chroot ausgeführten Befehlen nach Bedarf weiter- und umgeleitet werden können. Die Daten werden die selben wie bei der Ausführung des Befehls direkt auf dem Wirtsystem sein.

FEHLERBEHEBUNG

Falls etwas nicht funktioniert und aus den Fehlermeldungen nicht hervorgeht, was falsch ist, versuchen Sie die Option --debug=Stufe zu benutzen, um Debug-Meldungen einzuschalten. Dies gibt eine große Menge weiterer Informationen. Gültige Debug-Stufen sind »none« und »notice«, »info«, »warning« und »critical« nach zunehmender Schwere geordnet. Je niedriger der Schweregrad desto mehr wird ausgegeben.

Falls Sie immer noch Schwierigkeiten haben, können die Entwickler auf der Mailingliste kontaktiert werden:
Debian-Buildd-Tools-Entwickler
<[email protected]>

FEHLER

Auf den Architekturen mips und mipsel haben Linux-Kernel bis einschließlich Version 2.6.17 kaputte personality(2)-Unterstützung, die dazu führt, dass das Setzen der Persönlichkeit fehlschlägt. Dies wird als ein »Transaktion nicht erlaubt«-Fehler (EPERM) gesehen. Um dieses Problem zu umgehen setzen Sie personality auf »undefined« oder führen Sie ein Upgrade auf einen aktuelleren Kernel durch.

DATEIEN

die systemweite schroot-Definitionsdatei. Diese Datei muss dem Benutzer Root gehören und darf nicht durch andere beschreibbar sein.

AUTOR

Roger Leigh

Diese Umsetzung von Dchroot verwendet die selben Befehlszeilenoptionen wie das Original-dchroot von David Kimdon <[email protected]>, ist aber eine unabhängige Umsetzung.

COPYRIGHT

Copyright © 2005-2012 Roger Leigh <[email protected]>

ist freie Software. Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 3 der Lizenz oder (nach Ihrer Option) jeder späteren Version.