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.
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
- The type of the chroot. Valid types are ‘plain’,
‘directory’, ‘file’, ‘loopback’,
‘block-device’, ‘btrfs-snapshot’,
‘zfs-snapshot’ and ‘lvm-snapshot’. If empty or
omitted, the default type is ‘plain’. Note that
‘plain’ chroots do not run setup scripts and mount
filesystems; ‘directory’ is recommended for normal use (see
“Plain and directory chroots”, below).
- 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
Konfigurationen 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)$«.
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).
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
- die Datei, die die (verbindliche) archivierte Chroot-Umgebung
enthält. Dies muss ein Tar (Bandarchiv) sein, das wahlweise mit
Gzip, Bzip2, Xz, Lzop oder Lz4 komprimiert ist. Die Dateierweiterungen,
die zur Bestimmung des Typs benutzt werden, sind .tar,
.tar.gz, .tar.bz2, .tar.xz, .tar.lzop,
.tar.lz4, .tgz, .tbz, .txz, .tzo und
.tlz4. Diese Datei muss dem Benutzer Root gehören und darf
nicht von anderen beschreibbar sein. Beachten Sie, dass Zip-Archive nicht
länger unterstützt werden; Zip war nicht in der Lage,
benannte Weiterleitungen und Geräteknoten zu archivieren und daher
nicht zur Archivierung von Chroots geeignet.
- 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.
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«.
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«.
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.
Chroots of type ‘zfs-snapshot’ are a ZFS clone
created from an existing ZFS dataset. A snapshot and clone will be created
from this source subvolume on demand at the start of a session, and then the
clone will be mounted. At the end of the session, the clone will be
unmounted and the clone and snapshot will be deleted. This chroot type
implements the source chroot options (see “Source chroot
options”, below). Note that a corresponding source chroot (of
type ‘directory’) will be created for each chroot of this
type; this is for convenient access to the source volume. These additional
options are also implemented:
- zfs-dataset=dataset_name
- Name of the ZFS source dataset to use.
- zfs-snapshot-options=snapshot_options
- Snapshot options. These are additional options to pass to zfs
snapshot.
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.
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).
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«.
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.
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
- setzt den Typ des vereinten Dateisystems. Derzeit unterstützte
Dateisysteme sind »aufs«, »overlayfs«,
»overlay« (seit Linux 4.0+) und »unionfs«. Die
Vorgabe ist »none«, wodurch diese Funktionalität
deaktiviert wird.
- 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«.
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.
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.