BEZEICHNUNG¶
schroot.conf - Chroot-Definitionsdatei für Schroot
BESCHREIBUNG¶
schroot.conf ist eine einfache UTF-8-Textdatei, die die zur
Verwendung mit Schroot verfügbaren Chroots beschreibt.
Ein »#« (»hash«)-Zeichen am Zeilenanfang leitet
einen Kommentar oder irgendeinen anderen Text ein. Alle Texte rechts von
»#« werden als Kommentar angesehen.
Das Konfigurationsformat hat einen INI-Stil, der durch Abschnittsnamen in
eckigen Klammern in Gruppen aus Schlüssel-Wert-Paaren unterteilt wird.
Allgemeine Optionen¶
Eine Chroot ist als eine Gruppe von Schlüssel-Wert-Paaren definiert, die
mit einem Namen in eckigen Klammern in einer eigenen Zeile beginnen. Die Datei
kann mehrere Gruppen enthalten, die daher mehrere Chroots definieren.
Eine Chroot-Definition beginnt mit dem Namen der Chroot in eckigen Klammern. Zum
Beispiel,
- [sid]
Der Name ist Gegenstand bestimmter Namensbeschränkungen. Weitere
Einzelheiten finden Sie im nachfolgenden Abschnitt »
Chroot-Namem«.
Diesem folgen dann mehrere Schlüssel-Wert-Paare, einer je Zeile:
- type=Typ
- der Typ der Chroot. Gültige Typen sind »plain«,
»directory«, »file«, »loopback«,
»block-device«, »btrfs-snapshot« und
»lvm-snapshot«. Falls dies leer ist oder weggelassen wurde,
ist der Standardtyp »plain«. Beachten Sie, dass
»plain«-Chroots keine Einrichtungsskripte ausführen
und Dateisysteme einhängen; für den normalen Gebrauch wird
»directory« empfohlen (siehe » Einfache und
Verzeichnis-Chroots« unterhalb).
- description=Beschreibung
- eine kurze Beschreibung der Chroot. Diese könnte in verschiedene
Sprachen lokalisiert sein; siehe den nachfolgenden Abschnitt »
Lokalisierung«.
- priority=Zahl
- setzt die Priorität einer Chroot. Zahl ist eine positive
Ganzzahl, die angibt, ob eine Distribution älter als eine andere
ist. »oldstable« und »oldstable-security«
könnten zum Beispiel »0« sein, während
»stable« und »stable-security«
»1« sind, »testing« »2« und
»unstable« »3«. Die Werte sind nicht wichtig
aber der Unterschied zwischen ihnen ist es. Diese Option ist missbilligt
und wird nicht weiter von Schroot benutzt, es ist aber immer noch erlaubt,
sie zu verwenden; sie wird in einer zukünftigen
Veröffentlichung hinfällig und entfernt.
- message-verbosity=Detailgrad
- setzt den Detailgrad der Meldungen, die Schroot bei der Einrichtung, dem
Ausführen von Befehlen und dem Aufräumen der Chroot ausgibt.
Gültige Einstellungen sind »quiet«
(unterdrückt die meisten Meldungen, »normal« (die
Vorgabe) und »verbose« (zeigt alle Meldungen an). Diese
Einstellung kann durch die Optionen --quiet und --verbose
außer Kraft gesetzt werden.
- users=Benutzer1,Benutzer2,…
- eine durch Kommas getrennte Liste von Benutzern, denen Zugriff auf die
Chroot gestattet ist. Falls sie leer ist oder weggelassen wird, wird
keinen Benutzern der Zugriff erlaubt (es sei denn, die Gruppe, zu dem sie
gehören wurde ebenfalls in groups angegeben).
- groups=Gruppe1,Gruppe2,…
- eine durch Kommas getrennte Liste von Gruppen, denen Zugriff auf die
Chroot gestattet ist. Falls sie leer ist oder weggelassen wird, wird
keiner Gruppe der Zugriff erlaubt.
- root-users=Benutzer1,Benutzer2,…
- eine durch Kommas getrennte Liste von Benutzern, denen ohne
Passwort Root-Zugriff auf die Chroot gewährt wird. Falls sie
leer ist oder weggelassen wird, wird keinen Benutzern der Zugriff ohne
Passwort erlaubt (falls aber die Benutzer oder die Gruppen, zu denen sie
gehören, in users beziehungsweise groups stehen,
können sie dennoch Zugriff ohne Passwort erlangen). Siehe den
nachfolgenden Abschnitt » Sicherheit«.
- root-groups=Gruppe1,Gruppe2,…
- eine durch Kommas getrennte Liste von Gruppen, denen ohne Passwort
Root-Zugriff auf die Chroot gewährt wird. Falls sie leer ist oder
weggelassen wird, wird keinen Benutzern der Zugriff ohne Passwort erlaubt
(falls aber die Benutzer oder die Gruppen, zu denen sie gehören, in
users beziehungsweise groups sind, können sie dennoch
Zugriff ohne Passwort erlangen). Siehe den nachfolgenden Abschnitt
» Sicherheit«.
- aliases=Alias1,Alias2,…
- eine durch Kommas getrennte Liste von Aliassen (alternative Namen)
für diese Chroot. Eine Chroot mit Namen »sid«
könnte der Einfachheit halber einen Alias »unstable«
haben, Aliasse unterliegen den selben Namensbeschränkungen wie der
Chroot-Name selbst.
- profile=Verzeichnis
- script-config=Dateiname
- Das Verhalten des Chroot-Einrichtungsskripts könnte auf
Chroot-Basis durch Setzen eines speziellen Konfigurationsprofils angepasst
werden. Das Verzeichnis ist relativ zu /etc/schroot. Die Vorgabe
ist »default«. Die Dateien in diesem Verzeichnis werden von
den Einrichtungsskripten eingelesen. Daher kann ihr Verhalten durch die
Auswahl eines geeigneten Profils angepasst werden. Alternativen sind
»minimal« (minimale Konfiguration), »desktop«
zum Ausführen von Arbeitsplatzanwendungen in der Chroot und um
weitere Funktionalität des Wirtssystem in der Chroot zur
Verfügung zu stellen) und »sbuild« (um die Chroot zum
Bauen von Debian-Paketen zu benutzen). Andere Pakete können
zusätzliche Profile bereitstellen. Die Standardwerte der
Schlüssel setup.config, setup.copyfiles,
setup.fstab und setup.nssdatabases basieren auf der
Einstellung profile.
- Beachten Sie, dass der Schlüssel profile den älteren
Schlüssel script-config ersetzt. Der Schlüssel
script-config ist exakt derselbe wie profile, hat aber
» /config« daran angehängt. Der
Standarddateiname ist »default/config«. Jeder dieser
Schlüssel kann benutzt werden. Falls beide vorhanden sind, wird
script-config den Vorrang erhalten ( profile wird
aufgehoben). script-config ist missbilligt und wird in einer
zukünftigen Veröffentlichung entfernt. Beachten Sie, dass
profile äquivalent zu script-config ist, falls die
Datei, die von script-config eingelesen wird, nur die von Schroot
bereitgestellten Standardvariablen enthält. Falls irgendwelche
zusätzlichen Variablen oder Shell-Skript-Codeschnipsel
hinzugefügt wurden, setzen Sie bitte setup.config, wodurch
das Einlesen dieser Datei weiterhin ermöglicht wird. Es wird
empfohlen, die Verwendung der eingelesenen Datei, wo dies möglich
ist, durch zusätzliche Schlüssel in der
»schroot.conf« zu ersetzen, es wird jedoch weiterhin
möglich sein, eine zusätzliche Konfigurationsdatei mittels
setup.config einzulesen.
- Arbeitsplatzbenutzer sollten daran denken, dass die Fstab-Datei
desktop/fstab bearbeitet werden muss, falls Sie Gdm3 verwenden;
bitte lesen Sie die Kommentare in dieser Datei, um weitere Anweisungen zu
erhalten. Der Schlüssel preserve-environment sollte
außerdem auf »true« gesetzt werden, so dass die
Umgebung innerhalb der Chroot aufbewahrt wird.
- Falls keines der oberhalb bereitgestellten Konfigurationsprofile Ihren
Bedarf deckt, können sie konfiguriert werden, um sie weiter
anzupassen und/oder kopiert und als Schablone für ganz neue Profile
verwendet werden.
- Beachten Sie, dass die unterschiedlichen Profile unterschiedliche
Konsequenzen für die Sicherheit haben; weitere Einzelheiten finden
Sie im nachfolgenden Abschnitt » Sicherheit«.
- setup.config=Dateiname
- Dieser Schlüssel gibt eine Datei an, die die Einrichtungsskripte
einlesen, wenn sie ausgeführt werden. Dies übernimmt den
durch script-config gesetzten Wert als Standardeinstellung. Die
Datei ist ein Bourne-Shell-Skript und kann daher zusätzlich zu den
einfachen Variablenzuweisungen jeden gültigen Shell-Code enthalten.
Dies wird zum Beispiel das Anpassen des Verhaltens entsprechend des
speziellen Chroot-Typs oder Namens ermöglichen. Beachten Sie, dass
das Skript für jeden einzelnen Skriptaufruf eingelesen wird und
deshalb idempotent sein muss.
- Alle Standardeinstellungen in dieser Datei können nun mittels
Konfigurationsschlüsseln in schroot.conf, wie nachfolgend
ausführlich beschrieben, gesetzt werden. Existierende Konfiguration
sollte so geändert werden, dass diese Schlüssel anstelle
dieser Datei Verwendung finden. Weitere Einzelheiten finden Sie in
schroot-script-config(5). Dieser Typ von
Einrichtungsskript-Konfigurationsdatei wird nicht länger als Teil
der Standardprofile bereitgestellt, wird aber weiterhin eingelesen, falls
er vorhanden und dieser Schlüssel gesetzt ist.
- setup.copyfiles=Dateiname
- eine Datei, die eine Liste von Dateien enthält, die in die Chroot
kopiert werden (eine Datei pro Zeile). Die Datei wird innerhalb der Chroot
den selben absoluten Speicherort haben.
- setup.fstab=Dateiname
- die Datei mit der Dateisystemtabelle, die zum Einhängen von
Dateisystemen innerhalb der Chroot benutzt wird. Das Format dieser Datei
ist identisch mit dem von /etc/fstab, das in fstab(5)
dokumentiert wird. Der einzige Unterschied ist, dass der Pfad zum
Einhängepunkt fs_dir relativ zur Chroot statt zum
Wurzelverzeichnis ist. Beachten Sie auch, dass Einhängepunkte auf
dem Wirt in eine kanonische Form gebracht werden, wodurch sichergestellt
wird, dass absolute symbolische Verweise auf etwas innerhalb der Chroot
zeigen. Komplexe Pfade, die mehrere symbolische Verweise enthalten,
könnten jedoch falsch aufgelöst werden. Es ist nicht ratsam,
verschachtelte symbolische Verweise als Einhängepunkte zu
verwenden.
- setup.nssdatabases=Dateiname
- eine Datei, die die Systemdatenbanken aufführt, die in die Chroot
kopiert werden. Die Standarddatenbanken sind »passwd«,
»shadow«, »group« und »gshadow«.
Andere mögliche Datenbanken, die beigefügt werden
können sind »services«, »protocols«,
»networks« und »hosts«. Die Datenbanken werden
mittels getent(1) kopiert. Daher werden alle in
/etc/nsswitch.conf aufgeführten Datenbankquellen für
jede Datenbank benutzt.
- setup.services=Dienst1,Dienst2,…
- eine durch Kommas getrennte Liste von von Diensten, die in der Chroot
ausgeführt werden. Diese werden bei Beginn der Sitzung gestartet
und bei Sitzungsende gestoppt.
- command-prefix=command,Option1,Option2,…
- eine durch Kommas getrennte Liste eines Befehls und Optionen für
den Befehl. Dieser Befehl und seine Optionen werden allen Befehlen
vorangestellt, die innerhalb der Chroot ausgeführt werden. Dies ist
nützlich, um Befehle wie »nice«,
»ionice« oder »eatmydata« für alle
Befehle die innerhalb der Chroot laufen, hinzuzufügen. Nice und
Ionice werden die CPU und die E/A-Zeitplanung beeinflussen. Eatmydata
ignoriert Fsync-Operationen des Dateisystems und ist nützlich
für Wegwerf-Chroot-Schnappschüsse, bei denen Sie sich nicht
um Datenverluste, aber um hohe Geschwindigkeit kümmern
müssen.
- personality=Rolle
- setzt die Persönlichkeit (Prozessausführungsdomänen),
die benutzt werden soll. Diese Option ist nützlich, wenn zum
Beispiel eine 32-Bit-Chroot auf einem 64-Bit-System verwendet wird.
Gültige Optionen auf Linux sind »bsd«,
»hpux«, »irix32«, »irix64«,
»irixn32«, »iscr4«, »linux«,
»linux32«, »linux_32bit«,
»osf4«, »osr5«, »riscos«,
»scorvr3«, »solaris«, »sunos«,
»svr4«, »uw7«, »wysev386« und
»xenix«. Der Standardwert ist »linux«. Es gibt
außerdem noch die Spezialoption »undefined«
(Persönlichkeit nicht gesetzt). Für eine 32-Bit-Chroot auf
einem 64-Bit-System ist die erforderliche Option »linux32«.
Die einzige gültige Option für Nicht-Linux-Systeme ist
»undefined«. Der Standardwert für Nicht-Linux-Systeme
ist »undefined«.
- preserve-environment=true|false
- Standardmäßig wird die Umgebung nicht innerhalb der Chroot
aufbewahrt. Stattdessen wird eine minimale Umgebung benutzt. Ist dies auf
true gesetzt, wird die Umgebung immer aufbewahrt. Dies ist zum
Beispiel nützlich, wenn X-Anwendungen innerhalb der Chroot
ausgeführt werden, die die Umgebung zum korrekten Funktionieren
benötigen. Die Umgebung kann ebenso mittels der Option
--preserve-environment aufbewahrt werden.
- shell=Shell
- Wenn eine Login-Shell ausgeführt wird, wird eine
größere Zahl möglicher Shells in dieser Reihenfolge
berücksichtigt: der Befehl in der Umgebungsvariablen SHELL (falls
--preserve-environment benutzt wird oder
preserve-environment aktiviert ist), die Shell des Benutzers in der
Datenbank »passwd«, /bin/bash und schlussendlich
/bin/sh. Diese Einstellung setzt diese Liste außer Kraft und
wird die angegebene Shell verwenden. Sie kann mittels der Option
--shell überschrieben werden.
- environment-filter=regulärer Ausdruck
- Die Umgebung, die in der Chroot gesetzt wird, wird gefiltert, um
Umgebungsvariablen zu entfernen, die ein Sicherheitsrisiko darstellen
könnten. Jede Umgebungsvariable, die zum erweiterten
regulären POSIX-Ausdruck passt, wird vor dem Ausführen
irgendeines Befehls in der Chroot entfernt.
- Unter Umständen gefährliche Umgebungsvariablen werden aus
Sicherheitsgründen standardmäßig für die
folgenden regulären Ausdrücke entfernt:
»^(BASH_ENV|CDPATH|ENV|HOSTALIASES|IFS|KRB5_CONFIG|KRBCONFDIR|KRBTKFILE|KRB_CONF|LD_.*|LOCALDOMAIN|NLSPATH|PATH_LOCALE|RES_OPTIONS|TERMINFO|TERMINFO_DIRS|TERMPATH)$«.
Einfache und Verzeichnis-Chroots¶
Chroots des Typs »plain« oder »directory« sind
Verzeichnisse, auf die im Dateisystem zugegriffen werden kann. Diese beiden
Typen sind identisch, außer dass Verzeichnis-Chroots im Gegensatz zu
einfachen Chroots Einrichtungsskripte ausführen können.
Infolgedessen werden Dateisysteme wie
/proc nicht in einfachen Chroots
eingehängt; es liegt im Verantwortungsbereich des Systemadministrators,
solche Chroots von Hand zu konfigurieren, während Verzeichnis-Chroots
automatisch konfiguriert werden. Zusätzlich setzen Verzeichnis-Chroots
die Optionen der
dateisystemvereinenden Chroots um (siehe die
nachfolgenden »
Optionen der dateisystemvereinenden
Chroot«).
Diese Chroot-Typen haben eine zusätzliche (verbindliche)
Konfigurationsoption:
- directory=Verzeichnis
- das Verzeichnis, das die Chroot-Umgebung enthält. Dorthin wird das
Wurzelverzeichnis geändert, wenn eine Login-Shell oder ein Befehl
ausgeführt wird. Das Verzeichnis muss existieren und Lese- sowie
Ausführungsrechte haben, damit Benutzer darauf zugreifen
können. Beachten Sie, dass es auf Linux-Systemen mit der Option
»bind« andernorts eingehängt wird, um es als Chroot
zu verwenden. Das Verzeichnis für »plain«-Chroots
wird mit der Option --rbind von mount(8) eingehängt,
während für »directory«-Chroots stattdessen
--bind benutzt wird, so dass darunterliegende
Einhängevorgänge nicht aufrecht erhalten werden (sie sollten
in der Datei fstab genauso wie in /etc/fstab des Rechners
gesetzt werden).
Datei-Chroots¶
Chroots des Typs »file« sind Dateien des aktuellen Dateisystems,
die ein Archiv der Chroot-Dateien enthalten. Sie setzen die
Source-Chroot-Optionen um (siehe »
Source-Chroot-Optionen« unten). Beachten Sie, dass für
jede Chroot dieses Typs eine entsprechende Source-Chroot (des Typs
»file«) erstellt wird; dies dient dem bequemen Zugang zum
Quellarchiv, z.B. zu Aktualisierungszwecken. Diese zusätzlichen
Optionen sind ebenfalls umgesetzt:
- file=Dateiname
- The file containing the archived chroot environment (mandatory). This must
be a tar (tape archive), optionally compressed with gzip, bzip2, xz, lzop
or lz4. The file extensions used to determine the type are are
.tar, .tar.gz, .tar.bz2, .tar.xz,
.tar.lzop, .tar.lz4, .tgz, .tbz, .txz,
.tzo and .tlz4. This file must be owned by the root user,
and not be writable by other. Note that zip archives are no longer
supported; zip was not able to archive named pipes and device nodes, so
was not suitable for archiving chroots.
- location=Pfad
- Dies ist der Pfad zur Chroot innerhalb des Archivs. Falls das
Archiv zum Beispiel eine Chroot in /squeeze enthält,
würden Sie hier »/squeeze« angeben. Falls die Chroot
das Einzige ist, was sich im Archiv befindet, d.h. / ist das
Wurzelverzeichnis des Dateisystems für die Chroot, sollte diese
Option leer bleiben oder ganz weggelassen werden.
Loopback-Chroots¶
Chroots des Typs »loopback« sind ein Dateisystem, das als Datei
auf der Platte verfügbar ist und auf das über ein Loopback-Mount
zugegriffen wird. Die Datei wird per Loopback eingehängt und auf
Anforderung ausgehängt. Loopback-Chroots setzen die Optionen
einhängbare Chroot und
dateisystemvereinende Chroot um
(siehe »
Optionen für einhängbare
Chroots« und »
Optionen der dateisystemvereinenden
Chroot« unten), sowie eine zusätzliche Option:
- file=Dateiname
- Dies ist der Name der Datei, die das Dateisystem enthält,
einschließlich des absoluten Pfades, zum Beispiel
»/srv/chroot/sid«.
Blockspeichergeräte-Chroots¶
Chroots des Typs »block-device« sind ein Dateisystem, das auf
einem nicht eingehängten Blockspeichergerät verfügbar
ist. Das Gerät wird auf Anforderung ein- und ausgehängt.
Blockspeichergeräte-Chroots setzen die Optionen
einhängbare
Chroot und
dateisystemvereinende Chroot um (siehe »
Optionen für einhängbare Chroots« und »
Optionen der dateisystemvereinenden Chroot« unten), sowie
eine zusätzliche Option:
- device=Gerät
- Dies ist der Gerätename des Blockspeichergeräts,
einschließlich des absoluten Pfads, zum Beispiel
»/dev/sda5«.
Btrfs-Schnappschuss-Chroots¶
Chroots des Typs »btrfs-snapshot« sind aus einem existierenden
Btrfs-Unterdatenträger erstellte Btrfs-Schnappschüsse auf einem
eingehängten Btrfs-Dateisystem. Auf Anforderung wird beim Beginn der
Sitzung ein Schnappschuss aus diesem Unterdatenträger erstellt und dann
eingehängt. Am Ende der Sitzung wird der Schnappschuss
ausgehängt und gelöscht. Dieser Chroot-Typ setzt die
Source-Chroot-Optionen um (siehe nachfolgend »
Source-Chroot-Optionen«). Beachten Sie, dass für jede
Chroot dieses Typs eine entsprechende Source-Chroot (des Typs
»directory«) erstellt wird; dies dient dem bequemen Zugriff auf
den Quelldatenträger. Diese zusätzlichen Optionen sind ebenfalls
eingebaut:
- btrfs-source-subvolume=Verzeichnis
- das Verzeichnis, das den Quellunterdatenträger enthält
- btrfs-snapshot-directory=Verzeichnis
- das Verzeichnis, in das die Schnappschüsse des oben genannten
Quellunterdatenträgers gespeichert werden.
LVM-Schnappschuss-Chroots¶
Chroots des Typs »lvm-snapshot« sind ein Dateisystem, das auf
einem mit LVM verwalteten logischen Laufwerk (LV) verfügbar ist. Ein
LV-Schnappschuss wird auf Anforderung aus diesem LV erstellt. Dann wird der
Schnappschuss eingehängt. Am Ende der Sitzung wird der LV-Schnappschuss
ausgehängt und entfernt.
LVM-Schnappschuss-Chroots setzen die
Source-Chroot-Optionen um (siehe
»
Source chroot options« unten) und all die Optionen
für »block-device«. Beachten Sie, dass eine
zugehörige Source-Chroot (des Typs »block-device«)
für jede Chroot dieses Typs erstellt wird; dies dient dem bequemen
Zugriff auf das Quellgerät. Diese zusätzliche Option ist
ebenfalls eingebaut:
- lvm-snapshot-options=Schnappschussoptionen
- Schnappschussoptionen. Dies sind zusätzliche Optionen, die an
lvcreate(8) übergeben werden, zum Beispiel »-L 2g«,
um einen Schnappschuss mit einer Größe von 2 GiB zu
erstellen. Hinweis: Hier können nicht der LV-Name (
-n), die Schnappschussoption ( -s) und der Originalpfadname
des LVs angegeben werden; sie werden automatisch durch Schroot
gesetzt.
Benutzerdefinierte Chroots¶
Chroots des Typs »custom« sind ein spezieller Chroot-Typ, der
für die Umsetzung neuer Chroot-Typen benutzt wird, der nicht durch eine
der obigen Chroot-Typen unterstützt wird. Dies kann nützlich
sein, um einen neuen Chroot-Typ umzusetzen und zu testen, ohne dabei
irgendwelchen C++-Code schreiben zu müssen. Sie müssen jedoch
Ihr eigenes Einrichtungsskript verfassen, das die Einrichtungsarbeit
übernimmt, da dieser Chroot-Typ von allein sehr wenig tut. Sie
müssen Ihrer Chroot-Definition außerdem benutzerdefinierte
Schlüssel für die Verwendung im Einrichtungsskript
hinzufügen; anders als für die oben genannten Chroot-Typen wird
keine Überprüfung der Optionen stattfinden, so lange Sie dies
nicht selbst in Ihrem Einrichtungsskript erledigen. Folgende
zusätzlichen Optionen sind ebenfalls eingebaut:
- custom-session-cloneable=true|false
- stellt ein, ob Sitzungen dieser Chroot geklont werden können oder
nicht (standardmäßig aktiviert).
- custom-session-purgeable=true|false
- stellt ein, ob Sitzungen dieser Chroot geklont werden können oder
nicht (standardmäßig deaktiviert).
- custom-source-cloneable=true|false
- stellt ein, ob mittels dieser Chroot Source-Chroots geklont werden
können oder nicht (standardmäßig deaktiviert).
Source-Chroot-Optionen¶
Die Chroot-Typen »btrfs-snapshot«, »file« und
»lvm-snapshot« setzen Source-Chroots um. Zusätzlich
setzen Chroot-Typen mit eingeschalteter Unterstützung von Vereinigungen
Source-Chroots um (siehe »
Optionen der
dateisystemvereinenden Chroot« unten). Dies sind Chroots, die
vor der Benutzung automatisch eine Kopie von sich selbst erstellen und
normalerweise von Sitzungen verwaltet werden. Diese Chroots stellen
zusätzlich eine Chroot im Namensraum
source: bereit, um bequemen
Zugriff auf die Originaldaten (kein Schnappschuss) zu ermöglichen und
bei der Verwaltung der Chroot zu helfen. D.h., für eine Chroot namens
wheezy (
chroot:wheezy) wird eine entsprechende Chroot
source:wheezy erstellt. Um mit älteren Versionen von Schroot,
die keine Namensräume unterstützten, kompatibel zu bleiben, wird
zusätzlich eine Chroot mit einer an den Chroot-Namen angehängten
-source-Erweiterung erstellt (d.h.
wheezy-source im vorherigen
Beispiel). Beachten Sie, dass diese Kompatibilitätsnamen in Schroot
1.5.0 entfernt werden, so dass die Verwendung des
source:-Namensraums
der Form mit der
-source-Endung vorgezogen wird. Weitere Einzelheiten
finden Sie unter
schroot(1).
Diese Chroot stellen die folgenden zusätzlichen Optionen bereit:
- source-clone=true|false
- stellt ein, ob die Source-Chroot für diese Chroot automatisch
geklont (erstellt) werden soll. Vorgabe ist true zum automatischen
Klonen, aber, falls gewünscht, kann dies durch Setzen auf
false deaktiviert werden. Falls es deaktiviert ist, kann nicht auf
die Chroot zugegriffen werden.
- source-users=Benutzer1,Benutzer2,…
- eine durch Kommas getrennte Liste von Benutzern, denen der Zugriff auf die
Source-Chroot gestattet ist. Falls sie leer ist oder weggelassen wird,
wird der Zugriff keinen Benutzern gestattet. Dies wird die Option
users in der Source-Chroot werden.
- source-groups=Gruppe1,Gruppe2,…
- eine durch Kommas getrennte Liste von Gruppen, denen der Zugriff auf die
Source-Chroot gestattet ist. Falls sie leer ist oder weggelassen wird,
wird der Zugriff keinen Benutzern gestattet. Dies wird die Option
groups in der Source-Chroot werden.
- source-root-users=Benutzer1,Benutzer2,…
- eine durch Kommas getrennte Liste von Benutzern, denen der Root-Zugriff
auf die Source-Chroot ohne Passwort gestattet ist. Falls sie leer
ist oder weggelassen wird, wird der Root-Zugriff keinen Benutzern ohne
Passwort gestattet (falls ein Benutzer aber in users steht, kann er
mit einem Passwort Zugriff erlangen). Dies wird die Option
root-users in der Source-Chroot werden. Lesen Sie den nachfolgenden
Abschnitt » Sicherheit«.
- source-root-groups=Gruppe1,Gruppe2,…
- eine durch Kommas getrennte Liste von Gruppen, denen der Root-Zugriff auf
die Source-Chroot ohne Passwort gestattet ist. Falls sie leer ist
oder weggelassen wird, wird der Root-Zugriff keinen Benutzern ohne
Passwort gestattet (falls die Gruppe eines Benutzers aber in groups
steht, kann er mit einem Passwort Zugriff erlangen). Dies wird die Option
root-groups in der Source-Chroot werden. Lesen Sie dazu den
nachfolgenden Abschnitt » Sicherheit«.
Optionen für einhängbare Chroots¶
Die Chroot-Typen »block-device«, »loopback« und
»lvm-snapshot« setzen das Einhängen von Geräten
um. Es handelt sich dabei um Chroots, die das Einhängen eines
Geräts erfordern, um auf die Chroot zugreifen zu können. Diese
Chroots stellen die folgenden zusätzlichen Optionen bereit:
- mount-options=Optionen
- Einhängeoptionen für das Blockspeichergerät. Dies
sind zusätzliche Optionen, die an mount(8) übergeben
werden, zum Beispiel »-o atime,sync,user_xattr«.
- location=Pfad
- Dies ist der Pfad zur Chroot innerhalb des Dateisystems auf dem
Gerät. Falls das Dateisystem zum Beispiel eine Chroot in
/chroot/sid enthält, würden Sie hier
»/chroot/sid« angeben. Falls die Chroot das Einzige ist, was
sich auf dem Dateisystem befindet, d.h. / das Wurzeldateisystem der
Chroot ist, sollte diese Option leer sein oder ganz weggelassen
werden.
Optionen der dateisystemvereinenden Chroot¶
Die Chroot-Typen »block-device«, »directory« und
»loopback« ermöglichen beim Erstellen einer Sitzung die
Benutzung von vereinten Dateisystemen, um das Originaldateisystem mit einem
separaten beschreibbaren Dateisystem zu überlagern. Das
Originaldateisystem hat nur Lesezugriff mit einigen Änderungen, die im
darüberliegenden beschreibbaren Verzeichnis gemacht wurden und das
Originaldateisystem unverändert lassen. Eine Union erlaubt mehrere
Sitzungen, um simultan auf eine einzelne Chroot zuzugreifen und
Änderungen daran vorzunehmen, während die Änderungen
für jede Sitzung privat gehalten werden. Um diese Funktionalität
zu aktivieren, setzen Sie
union-type auf irgendeinen
unterstützten Wert. Falls dies aktiviert ist, wird die Chroot
außerdem eine
Source-Chroot sein, die zusätzliche
Optionen bereitstellt (siehe »
Source-Chroot-Optionen«,
oben). Alle Einträge sind optional.
- union-type=Typ
- Set the union filesystem type. Currently supported filesystems are
‘aufs’, ‘overlayfs’, ‘overlay’
(as of Linux 4.0+) and ‘unionfs’. The default is
‘none’, which disables this feature.
- union-mount-options=Optionen
- Einhängeoptionen des vereinten Dateisystems (Konfiguration des
Zweigs), die zum Einhängen des vereinten Dateisystems mit
union-type angegeben werden. Dies ersetzt die vollständige
Zeichenkette »-o« zum Einhängen und ermöglicht
das Erstellen komplexer vereinter Dateisysteme. Beachten Sie, dass
»aufs«, »overlayfs« und
»unionfs« jeweils verschiedene Einhängeoptionen
unterstützen. Hinweis: Die Variablen
»${CHROOT_UNION_OVERLAY_DIRECTORY}« und
»${CHROOT_UNION_UNDERLAY_DIRECTORY}« können benutzt
werden, um auf das darüberliegende beschreibbare
Sitzungsverzeichnis und das darunterliegende Verzeichnis mit Lesezugriff
Bezug zu nehmen, die zum Vereinen dienen. Eine vollständige
Variablenliste finden Sie unter schroot-setup(5).
- union-overlay-directory=Verzeichnis
- gibt das Verzeichnis an, in dem die beschreibbaren darüberliegenden
Sitzungsverzeichnisse erstellt werden. Vorgabe ist
»/var/lib/schroot/union/overlay«.
- union-underlay-directory=Verzeichnis
- gibt das Verzeichnis an, in dem die darunterliegenden Verzeichnisse mit
Lesezugriff erstellt werden. Vorgabe ist
»/var/lib/schroot/union/underlay«.
Anpassung¶
Zusätzlich zu den oben aufgeführten Schlüsseln ist es
möglich benutzerdefinierte Schlüssel hinzuzufügen. Diese
Schlüssel werden benutzt, um dem Einrichtungsskript zusätzliche
Umgebungsvariablen hinzuzufügen, wenn Einrichtungsskripte
ausgeführt werden. Die einzige Einschränkung ist, dass der
Schlüsselname nur aus alphanumerischen Zeichen und Bindestrichen
bestehen darf, mit einem Buchstaben beginnen und mindestens einen Punkt
enthalten muss. Das heißt, dass er zu dem regulären Ausdruck
»^([a-z][a-z0-9]*\.)+[a-z][a-z0-9-]*$« passt.
Zum Beispiel:
debian.apt-update=true
debian.distribution=unstable
würde die folgende Umgebung setzen:
DEBIAN_APT_UPDATE=true
DEBIAN_DISTRIBUTION=unstable
Beachten Sie, dass es ein Fehler ist, unterschiedliche Schlüsselnamen zu
verwenden, die die selbe Umgebungsvariable durch Mixen von Punkten und
Bindestrichen setzen würden.
Benutzerdefinierte Konfigurationsschlüssel können außerdem
zur Laufzeit unter Benutzung der Option
--option geändert
werden. Aus Sicherheitsgründen können jedoch nur
ausgewählte Schlüssel geändert werden. Diese
Schlüssel werden mittels der folgenden Optionen angegeben:
- user-modifiable-keys=Schlüssel1,Schlüssel2,…
- setzt die Schlüssel, die Benutzer unter Benutzung von
--option ändern können.
- root-modifiable-keys=Schlüssel1,Schlüssel2,…
setzt die Schlüssel, die der
- Root-Benutzer mittels --option ändern kann. Beachten Sie,
dass der Root-Benutzer die in user-modifiable-keys angegebenen
Schlüssel zusätzlich zu den hier angegebenen verwenden
kann.
Lokalisierung¶
einige Schlüssel können in mehrere Sprachen lokalisiert sein. Dies
wird durch Hinzufügen des Local-Namens in eckigen Klammern nach dem
Schlüsselnamen erreicht, zum Beispiel:
description[en_GB]= British English translation
Dies wird den Schlüssel
description für die Locale en_GB
lokalisieren.
description[fr]= Traduction française
Dies wird den Schlüssel
description für alle
französischen Locales lokalisieren.
CHROOT-NAMEN¶
In einem Chroot-, Sitzungs- oder Konfigurationsdateinamen sind eine Reihe von
Zeichen und Wörtern nicht erlaubt. Der Name darf am Anfang keinen Punkt
haben. Die Zeichen »:« (Doppelpunkt), »,« (Komma)
und »/« (Vorwärtsschrägstrich) sind nirgendwo im
Namen erlaubt. Der Name darf außerdem keine führende Tilde
(»~«) enthalten. Die Gründe für diese
Einschränkungen werden nachfolgend angegeben.
- ».«
- Ein führender Punkt kann benutzt werden, um einen Namen mit darin
enthaltenem relativen Pfad in Kombination mit »/« zu
erstellen und dies kann das Überschreiben von Dateien auf dem
Wirtsystem ermöglichen. Wird dieses Zeichen nicht erlaubt,
heißt das außerdem, dass keine versteckten Dateien erstellt
werden können. Außerdem bedeutet es, dass einige
Editor-Sicherungen automatisch ignoriert werden. Punkte sind sonst
überall im Namen erlaubt.
- »:«
- Ein Doppelpunkt wird als Namensraumtrenner benutzt und ist daher nicht als
Teil eines Chroot- oder Sitzungsnamens erlaubt. LVM-Schappschussnamen
dürfen dieses Zeichen aufgrund von Namensbeschränkungen
durch lvcreate(8) auch nicht enthalten.
- »/«
- Namen, die dieses Zeichen enthalten, sind keine gültigen
Dateinamen. Ein Vorwärtsschrägstrich würde
möglicherweise das Erstellen von Dateien in Unterverzeichnissen
gestatten.
- »,«
- Kommas werden benutzt, um Elemete in der Liste voneinander zu trennen.
Aliasse werden durch Kommas getrennt und können daher keine Kommas
in ihren Namen enthalten.
- »~«
- Dateinamen, die führende Tilden enthalten, werden von Editoren als
Sicherungsdateien benutzt und daher ignoriert. Tilden sind sonst
überall im Namen erlaubt.
- »dpkg-old«
- »dpkg-dist« » dpkg-new« »
dpkg-tmp« Diese Namen erscheinen möglicherweise nicht
am Ende eines Namens. Dies sind gesicherte Kopien von Conffiles, die von
der Paketverwaltung Dpkg benutzt und daher ignoriert werden.
SICHERHEIT¶
Nicht vertrauenswürdige Benutzer¶
Beachten Sie, dass es ein
ernstes Sicherheitsrisiko ist, nicht
vertrauenswürdigen Benutzern Root-Zugriff zu gewähren! Obwohl
der nicht vertrauenswürdige Benutzer nur Root-Zugriff innerhalb der
Chroot hat, gibt es in der Praxis viele offensichtliche Wege aus der Chroot
auszubrechen und Dienste auf dem Wirtsystem zu zerstören. Wie immer
wird dies auf
Vertrauen hinauslaufen.
Geben Sie keinen Benutzern Root-Zugriff, denen Sie nicht trauen
würden, wenn sie Root-Zugriff auf das Wirtsystem
hätten.
Profile¶
Abhängig davon, welche Profile Sie mit der Option
script-config
konfiguriert haben, werden unterschiedliche Dateisysteme innerhalb der Chroot
eingehängt und es werden unterschiedliche Dateien vom Wirtsystem in die
Chroot kopiert. Einige Profile werden
/dev vom Wirtsystem
einhängen, andere nicht. Einige Profile werden außerdem
zusätzliche Teile des Wirtdateisystems mit der Option
»bind« einhängen, um die Benutzung verschiedener
Funktionen zu ermöglichen, einschließlich des
Home-Verzeichnisses des Benutzers und bestimmter Teile von
/var.
Prüfen Sie die Datei
fstab des Profils, um sich zu versichern,
was eingehängt wird und die anderen Profildateien, um zu sehen, welche
Dateien und Systemdatenbanken in die Chroot kopiert werden. Wählen Sie
ein anderes Profil aus oder bearbeiten Sie die Dateien, um weiter
einzugrenzen, was innerhalb der Chroot verfügbar gemacht wird.
Es gibt einen Kompromiss zwischen Sicherheit (die Chroot so klein wie
möglich halten) und Benutzerfreundlichkeit (die manchmal Zugriff auf
Teile des Wirtdateisystems erfordert). Die unterschiedlichen Profile gehen
unterschiedliche Kompromisse ein und es ist wichtig, dass Sie beurteilen,
welchen Kompromiss aus Sicherheit und Benutzerfreundlichkeit Sie
benötigen.
BEISPIEL¶
# Beispielkonfiguration
[sid]
type=plain
description=Debian unstable
description[fr_FR]=Debian instable
directory=/srv/chroot/sid
priority=3
users=jim
groups=sbuild
root-users=rleigh
aliases=unstable,default
[etch]
type=block-device
description=Debian testing (32-bit)
priority=2
groups=users
#groups=sbuild-security
aliases=testing
device=/dev/hda_vg/etch_chroot
mount-options=-o atime
personality=linux32
[sid-file]
type=file
description=Debian sid file-based chroot
priority=3
groups=sbuild
file=/srv/chroots/sid.tar.gz
[sid-snapshot]
type=lvm-snapshot
description=Debian unstable LVM snapshot
priority=3
groups=sbuild
users=rleigh
source-root-users=rleigh
source-root-groups=admin
device=/dev/hda_vg/sid_chroot
mount-options=-o atime,sync,user_xattr
lvm-snapshot-options=--size 2G
DATEIEN¶
Chroot-Definitionen¶
- /etc/schroot/schroot.conf
- die systemweite Chroot-Definitionsdatei. Diese Datei muss dem Benutzer
Root gehören und darf nicht durch andere beschreibbar sein.
- /etc/schroot/chroot.d
- Zusätzliche Chroot-Definitionen können unter diesem
Verzeichnis in »files« abgelegt werden. Sie werden auf exakt
die selbe Weise wie /etc/schroot/schroot.conf betrachtet. Jede
Datei kann eine oder mehrere Chroot-Definitionen enthalten.
Einrichtungsskriptkonfiguration¶
Das Verzeichnis
/etc/schroot/default enthält die von
Einrichtungsskripten benutzten Standardeinstellungen.
- config
- Hauptkonfigurationsdatei, die von Einrichtungsskripten gelesen wird. Das
Format dieser Datei wird in schroot-script-config(5) beschrieben.
Dies ist der Standardwert für den Schlüssel
script-config. Beachten Sie, dass dies früher
/etc/schroot/script-defaults hieß. Auf die folgenden Werte
wird standardmäßig verwiesen:
- copyfiles
- eine Liste von Dateien, die vom Wirtsystem in die Chroot kopiert wird.
Beachten Sie, dass diese früher
/etc/schroot/copyfiles-defaults hieß.
- fstab
- eine Datei im Format, das in fstab(5) beschrieben wird. Sie wird
benutzt, um Dateisysteme innerhalb der Chroot einzuhängen. Der
Einhängeort ist relativ zum Wurzelverzeichnis der Chroot. Beachten
Sie, dass diese früher /etc/schroot/mount-defaults
hieß.
- nssdatabases
- Systemdatenbanken (wie in /etc/nsswitch.conf auf GNU/Linux-Systemen
beschrieben), die vom Wirtsystem in die Chroot kopiert werden. Beachten
Sie, dass diese früher /etc/schroot/nssdatabases-defaults
hieß.
AUTOR¶
Roger Leigh
COPYRIGHT¶
Copyright © 2005-2012 Roger Leigh <rleigh@debian.org>
schroot 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.
SIEHE AUCH¶
sbuild(1),
schroot(1),
schroot-script-config(5),
schroot-faq(7),
mount(8).