Man page - schroot.conf(5)
Packages contains this manual
Available languages:
en fr deManual
SCHROOT.CON
BEZEICHNUNGBESCHREIBUNG
Allgemeine Optionen
Einfache und Verzeichnis-Chroots
Datei-Chroots
Loopback-Chroots
Blockspeichergeräte-Chroots
Btrfs-Schnappschuss-Chroots
ZFS snapshot chroots
LVM-Schnappschuss-Chroots
Benutzerdefinierte Chroots
Source-Chroot-Optionen
Optionen für einhängbare Chroots
Optionen der dateisystemvereinenden Chroot
Anpassung
Lokalisierung
CHROOT-NAMEN
SICHERHEIT
Nicht vertrauenswürdige Benutzer
Profile
BEISPIEL
DATEIEN
Chroot-Definitionen
Einrichtungsskriptkonfiguration
AUTOR
COPYRIGHT
SIEHE AUCH
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
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)$«.
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 Chroot s 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
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.
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.
ZFS snapshot chroots
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.
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
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«.
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
A number of characters or words are not permitted in a chroot name, session name or configuration filename. The name must begin with a lowercase or an uppercase letter, or a digit. The remaining characters may additionally be dash (‘-’), period (‘.’), or underscore (‘_’).
The rationale
for these restrictions is as follows:
Generic
Unfortunately, not all the places that deal with chroot names can handle non-printable and other characters properly, and it’s hard to update all of them. This is mostly about the various shell scripts where it’s also unwise to assume authors always create safe code.
»
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@codelibre.net>
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).