SCHROOT.CON(5) 2022 SCHROOT.CON(5) BEZEICHNUNG schroot.conf - Chroot-Definitionsdatei fur Schroot BESCHREIBUNG schroot.conf ist eine einfache UTF-8-Textdatei, die die zur Verwendung mit Schroot verfugbaren 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 Schlussel-Wert-Paaren unterteilt wird. Allgemeine Optionen Eine Chroot ist als eine Gruppe von Schlussel-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 Namensbeschrankungen. Weitere Einzelheiten finden Sie im nachfolgenden Abschnitt >>Chroot-Namem<<. Diesem folgen dann mehrere Schlussel-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 konnte in verschiedene Sprachen lokalisiert sein; siehe den nachfolgenden Abschnitt >>Lokalisierung<<. priority=Zahl setzt die Prioritat einer Chroot. Zahl ist eine positive Ganzzahl, die angibt, ob eine Distribution alter als eine andere ist. >>oldstable<< und >>oldstable-security<< konnten zum Beispiel >>0<< sein, wahrend >>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 zukunftigen Veroffentlichung hinfallig und entfernt. message-verbosity=Detailgrad setzt den Detailgrad der Meldungen, die Schroot bei der Einrichtung, dem Ausfuhren von Befehlen und dem Aufraumen der Chroot ausgibt. Gultige Einstellungen sind >>quiet<< (unterdruckt die meisten Meldungen, >>normal<< (die Vorgabe) und >>verbose<< (zeigt alle Meldungen an). Diese Einstellung kann durch die Optionen --quiet und --verbose ausser 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 gehoren 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 gewahrt 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 gehoren, in users beziehungsweise groups stehen, konnen 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 gewahrt 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 gehoren, in users beziehungsweise groups sind, konnen sie dennoch Zugriff ohne Passwort erlangen). Siehe den nachfolgenden Abschnitt >>Sicherheit<<. aliases=Alias1,Alias2, eine durch Kommas getrennte Liste von Aliassen (alternative Namen) fur diese Chroot. Eine Chroot mit Namen >>sid<< konnte der Einfachheit halber einen Alias >>unstable<< haben, Aliasse unterliegen den selben Namensbeschrankungen wie der Chroot-Name selbst. profile=Verzeichnis script-config=Dateiname Das Verhalten des Chroot-Einrichtungsskripts konnte 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 Ausfuhren von Arbeitsplatzanwendungen in der Chroot und um weitere Funktionalitat des Wirtssystem in der Chroot zur Verfugung zu stellen) und >>sbuild<< (um die Chroot zum Bauen von Debian-Paketen zu benutzen). Andere Pakete konnen zusatzliche Profile bereitstellen. Die Standardwerte der Schlussel setup.config, setup.copyfiles, setup.fstab und setup.nssdatabases basieren auf der Einstellung profile. Beachten Sie, dass der Schlussel profile den alteren Schlussel script-config ersetzt. Der Schlussel script-config ist exakt derselbe wie profile, hat aber >>/config<< daran angehangt. Der Standarddateiname ist >>default/config<<. Jeder dieser Schlussel kann benutzt werden. Falls beide vorhanden sind, wird script-config den Vorrang erhalten (profile wird aufgehoben). script-config ist missbilligt und wird in einer zukunftigen Veroffentlichung entfernt. Beachten Sie, dass profile aquivalent zu script-config ist, falls die Datei, die von script-config eingelesen wird, nur die von Schroot bereitgestellten Standardvariablen enthalt. Falls irgendwelche zusatzlichen Variablen oder Shell-Skript-Codeschnipsel hinzugefugt wurden, setzen Sie bitte setup.config, wodurch das Einlesen dieser Datei weiterhin ermoglicht wird. Es wird empfohlen, die Verwendung der eingelesenen Datei, wo dies moglich ist, durch zusatzliche Schlussel in der >>schroot.conf<< zu ersetzen, es wird jedoch weiterhin moglich sein, eine zusatzliche 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 Schlussel preserve-environment sollte ausserdem auf >>true<< gesetzt werden, so dass die Umgebung innerhalb der Chroot aufbewahrt wird. Falls keines der oberhalb bereitgestellten Konfigurationsprofile Ihren Bedarf deckt, konnen sie konfiguriert werden, um sie weiter anzupassen und/oder kopiert und als Schablone fur ganz neue Profile verwendet werden. Beachten Sie, dass die unterschiedlichen Profile unterschiedliche Konsequenzen fur die Sicherheit haben; weitere Einzelheiten finden Sie im nachfolgenden Abschnitt >>Sicherheit<<. setup.config=Dateiname Dieser Schlussel gibt eine Datei an, die die Einrichtungsskripte einlesen, wenn sie ausgefuhrt werden. Dies ubernimmt den durch script-config gesetzten Wert als Standardeinstellung. Die Datei ist ein Bourne-Shell-Skript und kann daher zusatzlich zu den einfachen Variablenzuweisungen jeden gultigen Shell-Code enthalten. Dies wird zum Beispiel das Anpassen des Verhaltens entsprechend des speziellen Chroot-Typs oder Namens ermoglichen. Beachten Sie, dass das Skript fur jeden einzelnen Skriptaufruf eingelesen wird und deshalb idempotent sein muss. Alle Standardeinstellungen in dieser Datei konnen nun mittels Konfigurationsschlusseln in schroot.conf, wie nachfolgend ausfuhrlich beschrieben, gesetzt werden. Existierende Konfigurationen sollte so geandert werden, dass diese Schlussel anstelle dieser Datei Verwendung finden. Weitere Einzelheiten finden Sie in schroot-script-config(5). Dieser Typ von Einrichtungsskript-Konfigurationsdatei wird nicht langer als Teil der Standardprofile bereitgestellt, wird aber weiterhin eingelesen, falls er vorhanden und dieser Schlussel gesetzt ist. setup.copyfiles=Dateiname eine Datei, die eine Liste von Dateien enthalt, 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 Einhangen 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 Einhangepunkt fs_dir relativ zur Chroot statt zum Wurzelverzeichnis ist. Beachten Sie auch, dass Einhangepunkte 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, konnten jedoch falsch aufgelost werden. Es ist nicht ratsam, verschachtelte symbolische Verweise als Einhangepunkte zu verwenden. setup.nssdatabases=Dateiname eine Datei, die die Systemdatenbanken auffuhrt, die in die Chroot kopiert werden. Die Standarddatenbanken sind >>passwd<<, >>shadow<<, >>group<< und >>gshadow<<. Andere mogliche Datenbanken, die beigefugt werden konnen sind >>services<<, >>protocols<<, >>networks<< und >>hosts<<. Die Datenbanken werden mittels getent(1) kopiert. Daher werden alle in /etc/nsswitch.conf aufgefuhrten Datenbankquellen fur jede Datenbank benutzt. setup.services=Dienst1,Dienst2, eine durch Kommas getrennte Liste von von Diensten, die in der Chroot ausgefuhrt 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 fur den Befehl. Dieser Befehl und seine Optionen werden allen Befehlen vorangestellt, die innerhalb der Chroot ausgefuhrt werden. Dies ist nutzlich, um Befehle wie >>nice<<, >>ionice<< oder >>eatmydata<< fur alle Befehle die innerhalb der Chroot laufen, hinzuzufugen. Nice und Ionice werden die CPU und die E/A-Zeitplanung beeinflussen. Eatmydata ignoriert Fsync-Operationen des Dateisystems und ist nutzlich fur Wegwerf-Chroot-Schnappschusse, bei denen Sie sich nicht um Datenverluste, aber um hohe Geschwindigkeit kummern mussen. personality=Rolle setzt die Personlichkeit (Prozessausfuhrungsdomanen), die benutzt werden soll. Diese Option ist nutzlich, wenn zum Beispiel eine 32-Bit-Chroot auf einem 64-Bit-System verwendet wird. Gultige 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 ausserdem noch die Spezialoption >>undefined<< (Personlichkeit nicht gesetzt). Fur eine 32-Bit-Chroot auf einem 64-Bit-System ist die erforderliche Option >>linux32<<. Die einzige gultige Option fur Nicht-Linux-Systeme ist >>undefined<<. Der Standardwert fur Nicht-Linux-Systeme ist >>undefined<<. preserve-environment=true|false Standardmassig 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 nutzlich, wenn X-Anwendungen innerhalb der Chroot ausgefuhrt werden, die die Umgebung zum korrekten Funktionieren benotigen. Die Umgebung kann ebenso mittels der Option --preserve-environment aufbewahrt werden. shell=Shell Wenn eine Login-Shell ausgefuhrt wird, wird eine grossere Zahl moglicher Shells in dieser Reihenfolge berucksichtigt: 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 ausser Kraft und wird die angegebene Shell verwenden. Sie kann mittels der Option --shell uberschrieben werden. environment-filter=regularer Ausdruck Die Umgebung, die in der Chroot gesetzt wird, wird gefiltert, um Umgebungsvariablen zu entfernen, die ein Sicherheitsrisiko darstellen konnten. Jede Umgebungsvariable, die zum erweiterten regularen POSIX-Ausdruck passt, wird vor dem Ausfuhren irgendeines Befehls in der Chroot entfernt. Unter Umstanden gefahrliche Umgebungsvariablen werden aus Sicherheitsgrunden standardmassig fur die folgenden regularen Ausdrucke 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, ausser dass Verzeichnis-Chroots im Gegensatz zu einfachen Chroots Einrichtungsskripte ausfuhren konnen. Infolgedessen werden Dateisysteme wie /proc nicht in einfachen Chroots eingehangt; es liegt im Verantwortungsbereich des Systemadministrators, solche Chroots von Hand zu konfigurieren, wahrend Verzeichnis-Chroots automatisch konfiguriert werden. Zusatzlich setzen Verzeichnis-Chroots die Optionen der dateisystemvereinenden Chroots um (siehe die nachfolgenden >>Optionen der dateisystemvereinenden Chroot<<). Diese Chroot-Typen haben eine zusatzliche (verbindliche) Konfigurationsoption: directory=Verzeichnis das Verzeichnis, das die Chroot-Umgebung enthalt. Dorthin wird das Wurzelverzeichnis geandert, wenn eine Login-Shell oder ein Befehl ausgefuhrt wird. Das Verzeichnis muss existieren und Lese- sowie Ausfuhrungsrechte haben, damit Benutzer darauf zugreifen konnen. Beachten Sie, dass es auf Linux-Systemen mit der Option >>bind<< andernorts eingehangt wird, um es als Chroot zu verwenden. Das Verzeichnis fur >>plain<<-Chroots wird mit der Option --rbind von mount(8) eingehangt, wahrend fur >>directory<<-Chroots stattdessen --bind benutzt wird, so dass darunterliegende Einhangevorgange 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 fur 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 zusatzlichen Optionen sind ebenfalls umgesetzt: file=Dateiname die Datei, die die (verbindliche) archivierte Chroot-Umgebung enthalt. 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 gehoren und darf nicht von anderen beschreibbar sein. Beachten Sie, dass Zip-Archive nicht langer unterstutzt werden; Zip war nicht in der Lage, benannte Weiterleitungen und Gerateknoten 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 enthalt, wurden Sie hier >>/squeeze<< angeben. Falls die Chroot das Einzige ist, was sich im Archiv befindet, d.h. / ist das Wurzelverzeichnis des Dateisystems fur 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 verfugbar ist und auf das uber ein Loopback-Mount zugegriffen wird. Die Datei wird per Loopback eingehangt und auf Anforderung ausgehangt. Loopback-Chroots setzen die Optionen einhangbare Chroot und dateisystemvereinende Chroot um (siehe >>Optionen fur einhangbare Chroots<< und >>Optionen der dateisystemvereinenden Chroot<< unten), sowie eine zusatzliche Option: file=Dateiname Dies ist der Name der Datei, die das Dateisystem enthalt, einschliesslich des absoluten Pfades, zum Beispiel >>/srv/chroot/sid<<. Blockspeichergerate-Chroots Chroots des Typs >>block-device<< sind ein Dateisystem, das auf einem nicht eingehangten Blockspeichergerat verfugbar ist. Das Gerat wird auf Anforderung ein- und ausgehangt. Blockspeichergerate-Chroots setzen die Optionen einhangbare Chroot und dateisystemvereinende Chroot um (siehe >>Optionen fur einhangbare Chroots<< und >>Optionen der dateisystemvereinenden Chroot<< unten), sowie eine zusatzliche Option: device=Gerat Dies ist der Geratename des Blockspeichergerats, einschliesslich des absoluten Pfads, zum Beispiel >>/dev/sda5<<. Btrfs-Schnappschuss-Chroots Chroots des Typs >>btrfs-snapshot<< sind aus einem existierenden Btrfs-Unterdatentrager erstellte Btrfs-Schnappschusse auf einem eingehangten Btrfs-Dateisystem. Auf Anforderung wird beim Beginn der Sitzung ein Schnappschuss aus diesem Unterdatentrager erstellt und dann eingehangt. Am Ende der Sitzung wird der Schnappschuss ausgehangt und geloscht. Dieser Chroot-Typ setzt die Source-Chroot-Optionen um (siehe nachfolgend >>Source-Chroot-Optionen<<). Beachten Sie, dass fur jede Chroot dieses Typs eine entsprechende Source-Chroot (des Typs >>directory<<) erstellt wird; dies dient dem bequemen Zugriff auf den Quelldatentrager. Diese zusatzlichen Optionen sind ebenfalls eingebaut: btrfs-source-subvolume=Verzeichnis das Verzeichnis, das den Quellunterdatentrager enthalt btrfs-snapshot-directory=Verzeichnis das Verzeichnis, in das die Schnappschusse des oben genannten Quellunterdatentragers 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) verfugbar ist. Ein LV-Schnappschuss wird auf Anforderung aus diesem LV erstellt. Dann wird der Schnappschuss eingehangt. Am Ende der Sitzung wird der LV-Schnappschuss ausgehangt und entfernt. LVM-Schnappschuss-Chroots setzen die Source-Chroot-Optionen um (siehe >>Source chroot options<< unten) und all die Optionen fur >>block-device<<. Beachten Sie, dass eine zugehorige Source-Chroot (des Typs >>block-device<<) fur jede Chroot dieses Typs erstellt wird; dies dient dem bequemen Zugriff auf das Quellgerat. Diese zusatzliche Option ist ebenfalls eingebaut: lvm-snapshot-options=Schnappschussoptionen Schnappschussoptionen. Dies sind zusatzliche Optionen, die an lvcreate(8) ubergeben werden, zum Beispiel >>-L 2g<<, um einen Schnappschuss mit einer Grosse von 2 GiB zu erstellen. Hinweis: Hier konnen 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 fur die Umsetzung neuer Chroot-Typen benutzt wird, der nicht durch eine der obigen Chroot-Typen unterstutzt wird. Dies kann nutzlich sein, um einen neuen Chroot-Typ umzusetzen und zu testen, ohne dabei irgendwelchen C++-Code schreiben zu mussen. Sie mussen jedoch Ihr eigenes Einrichtungsskript verfassen, das die Einrichtungsarbeit ubernimmt, da dieser Chroot-Typ von allein sehr wenig tut. Sie mussen Ihrer Chroot-Definition ausserdem benutzerdefinierte Schlussel fur die Verwendung im Einrichtungsskript hinzufugen; anders als fur die oben genannten Chroot-Typen wird keine Uberprufung der Optionen stattfinden, so lange Sie dies nicht selbst in Ihrem Einrichtungsskript erledigen. Folgende zusatzlichen Optionen sind ebenfalls eingebaut: custom-session-cloneable=true|false stellt ein, ob Sitzungen dieser Chroot geklont werden konnen oder nicht (standardmassig aktiviert). custom-session-purgeable=true|false stellt ein, ob Sitzungen dieser Chroot geklont werden konnen oder nicht (standardmassig deaktiviert). custom-source-cloneable=true|false stellt ein, ob mittels dieser Chroot Source-Chroots geklont werden konnen oder nicht (standardmassig deaktiviert). Source-Chroot-Optionen Die Chroot-Typen >>btrfs-snapshot<<, >>file<< und >>lvm-snapshot<< setzen Source-Chroots um. Zusatzlich setzen Chroot-Typen mit eingeschalteter Unterstutzung 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 zusatzlich eine Chroot im Namensraum source: bereit, um bequemen Zugriff auf die Originaldaten (kein Schnappschuss) zu ermoglichen und bei der Verwaltung der Chroot zu helfen. D.h., fur eine Chroot namens wheezy (chroot:wheezy) wird eine entsprechende Chroot source:wheezy erstellt. Um mit alteren Versionen von Schroot, die keine Namensraume unterstutzten, kompatibel zu bleiben, wird zusatzlich eine Chroot mit einer an den Chroot-Namen angehangten -source-Erweiterung erstellt (d.h. wheezy-source im vorherigen Beispiel). Beachten Sie, dass diese Kompatibilitatsnamen 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 zusatzlichen Optionen bereit: source-clone=true|false stellt ein, ob die Source-Chroot fur diese Chroot automatisch geklont (erstellt) werden soll. Vorgabe ist true zum automatischen Klonen, aber, falls gewunscht, 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 fur einhangbare Chroots Die Chroot-Typen >>block-device<<, >>loopback<< und >>lvm-snapshot<< setzen das Einhangen von Geraten um. Es handelt sich dabei um Chroots, die das Einhangen eines Gerats erfordern, um auf die Chroot zugreifen zu konnen. Diese Chroots stellen die folgenden zusatzlichen Optionen bereit: mount-options=Optionen Einhangeoptionen fur das Blockspeichergerat. Dies sind zusatzliche Optionen, die an mount(8) ubergeben werden, zum Beispiel >>-o atime,sync,user_xattr<<. location=Pfad Dies ist der Pfad zur Chroot innerhalb des Dateisystems auf dem Gerat. Falls das Dateisystem zum Beispiel eine Chroot in /chroot/sid enthalt, wurden 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<< ermoglichen beim Erstellen einer Sitzung die Benutzung von vereinten Dateisystemen, um das Originaldateisystem mit einem separaten beschreibbaren Dateisystem zu uberlagern. Das Originaldateisystem hat nur Lesezugriff mit einigen Anderungen, die im daruberliegenden beschreibbaren Verzeichnis gemacht wurden und das Originaldateisystem unverandert lassen. Eine Union erlaubt mehrere Sitzungen, um simultan auf eine einzelne Chroot zuzugreifen und Anderungen daran vorzunehmen, wahrend die Anderungen fur jede Sitzung privat gehalten werden. Um diese Funktionalitat zu aktivieren, setzen Sie union-type auf irgendeinen unterstutzten Wert. Falls dies aktiviert ist, wird die Chroot ausserdem eine Source-Chroot sein, die zusatzliche Optionen bereitstellt (siehe >>Source-Chroot-Optionen<<, oben). Alle Eintrage sind optional. union-type=Typ setzt den Typ des vereinten Dateisystems. Derzeit unterstutzte Dateisysteme sind >>aufs<<, >>overlayfs<<, >>overlay<< (seit Linux 4.0+) und >>unionfs<<. Die Vorgabe ist >>none<<, wodurch diese Funktionalitat deaktiviert wird. union-mount-options=Optionen Einhangeoptionen des vereinten Dateisystems (Konfiguration des Zweigs), die zum Einhangen des vereinten Dateisystems mit union-type angegeben werden. Dies ersetzt die vollstandige Zeichenkette >>-o<< zum Einhangen und ermoglicht das Erstellen komplexer vereinter Dateisysteme. Beachten Sie, dass >>aufs<<, >>overlayfs<< und >>unionfs<< jeweils verschiedene Einhangeoptionen unterstutzen. Hinweis: Die Variablen >>${CHROOT_UNION_OVERLAY_DIRECTORY}<< und >>${CHROOT_UNION_UNDERLAY_DIRECTORY}<< konnen benutzt werden, um auf das daruberliegende beschreibbare Sitzungsverzeichnis und das darunterliegende Verzeichnis mit Lesezugriff Bezug zu nehmen, die zum Vereinen dienen. Eine vollstandige Variablenliste finden Sie unter schroot-setup(5). union-overlay-directory=Verzeichnis gibt das Verzeichnis an, in dem die beschreibbaren daruberliegenden 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 Zusatzlich zu den oben aufgefuhrten Schlusseln ist es moglich benutzerdefinierte Schlussel hinzuzufugen. Diese Schlussel werden benutzt, um dem Einrichtungsskript zusatzliche Umgebungsvariablen hinzuzufugen, wenn Einrichtungsskripte ausgefuhrt werden. Die einzige Einschrankung ist, dass der Schlusselname nur aus alphanumerischen Zeichen und Bindestrichen bestehen darf, mit einem Buchstaben beginnen und mindestens einen Punkt enthalten muss. Das heisst, dass er zu dem regularen Ausdruck >>^([a-z][a-z0-9]*\.)+[a-z][a-z0-9-]*$<< passt. Zum Beispiel: debian.apt-update=true debian.distribution=unstable wurde die folgende Umgebung setzen: DEBIAN_APT_UPDATE=true DEBIAN_DISTRIBUTION=unstable Beachten Sie, dass es ein Fehler ist, unterschiedliche Schlusselnamen zu verwenden, die die selbe Umgebungsvariable durch Mixen von Punkten und Bindestrichen setzen wurden. Benutzerdefinierte Konfigurationsschlussel konnen ausserdem zur Laufzeit unter Benutzung der Option --option geandert werden. Aus Sicherheitsgrunden konnen jedoch nur ausgewahlte Schlussel geandert werden. Diese Schlussel werden mittels der folgenden Optionen angegeben: user-modifiable-keys=Schlussel1,Schlussel2, setzt die Schlussel, die Benutzer unter Benutzung von --option andern konnen. root-modifiable-keys=Schlussel1,Schlussel2, setzt die Schlussel, die der Root-Benutzer mittels --option andern kann. Beachten Sie, dass der Root-Benutzer die in user-modifiable-keys angegebenen Schlussel zusatzlich zu den hier angegebenen verwenden kann. Lokalisierung einige Schlussel konnen in mehrere Sprachen lokalisiert sein. Dies wird durch Hinzufugen des Local-Namens in eckigen Klammern nach dem Schlusselnamen erreicht, zum Beispiel: description[en_GB]=British English translation Dies wird den Schlussel description fur die Locale en_GB lokalisieren. description[fr]=Traduction francaise Dies wird den Schlussel description fur alle franzosischen 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 moglicherweise nicht am Ende eines Namens. Dies sind gesicherte Kopien von Conffiles, die von der Paketverwaltung Dpkg benutzt und daher ignoriert werden. SICHERHEIT Nicht vertrauenswurdige Benutzer Beachten Sie, dass es ein ernstes Sicherheitsrisiko ist, nicht vertrauenswurdigen Benutzern Root-Zugriff zu gewahren! Obwohl der nicht vertrauenswurdige 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 zerstoren. Wie immer wird dies auf Vertrauen hinauslaufen. Geben Sie keinen Benutzern Root-Zugriff, denen Sie nicht trauen wurden, wenn sie Root-Zugriff auf das Wirtsystem hatten. Profile Abhangig davon, welche Profile Sie mit der Option script-config konfiguriert haben, werden unterschiedliche Dateisysteme innerhalb der Chroot eingehangt und es werden unterschiedliche Dateien vom Wirtsystem in die Chroot kopiert. Einige Profile werden /dev vom Wirtsystem einhangen, andere nicht. Einige Profile werden ausserdem zusatzliche Teile des Wirtdateisystems mit der Option >>bind<< einhangen, um die Benutzung verschiedener Funktionen zu ermoglichen, einschliesslich des Home-Verzeichnisses des Benutzers und bestimmter Teile von /var. Prufen Sie die Datei fstab des Profils, um sich zu versichern, was eingehangt wird und die anderen Profildateien, um zu sehen, welche Dateien und Systemdatenbanken in die Chroot kopiert werden. Wahlen Sie ein anderes Profil aus oder bearbeiten Sie die Dateien, um weiter einzugrenzen, was innerhalb der Chroot verfugbar gemacht wird. Es gibt einen Kompromiss zwischen Sicherheit (die Chroot so klein wie moglich 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 benotigen. 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 gehoren und darf nicht durch andere beschreibbar sein. /etc/schroot/chroot.d Zusatzliche Chroot-Definitionen konnen 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 enthalt 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 fur den Schlussel script-config. Beachten Sie, dass dies fruher /etc/schroot/script-defaults hiess. Auf die folgenden Werte wird standardmassig verwiesen: copyfiles eine Liste von Dateien, die vom Wirtsystem in die Chroot kopiert wird. Beachten Sie, dass diese fruher /etc/schroot/copyfiles-defaults hiess. fstab eine Datei im Format, das in fstab(5) beschrieben wird. Sie wird benutzt, um Dateisysteme innerhalb der Chroot einzuhangen. Der Einhangeort ist relativ zum Wurzelverzeichnis der Chroot. Beachten Sie, dass diese fruher /etc/schroot/mount-defaults hiess. nssdatabases Systemdatenbanken (wie in /etc/nsswitch.conf auf GNU/Linux-Systemen beschrieben), die vom Wirtsystem in die Chroot kopiert werden. Beachten Sie, dass diese fruher /etc/schroot/nssdatabases-defaults hiess. AUTOR Roger Leigh COPYRIGHT Copyright (C) 2005-2012 Roger Leigh schroot ist freie Software. Sie konnen es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veroffentlicht, weitergeben und/oder modifizieren, entweder gemass Version 3 der Lizenz oder (nach Ihrer Option) jeder spateren Version. SIEHE AUCH sbuild(1), schroot(1), schroot-script-config(5), schroot-faq(7), mount(8). Aug 14 SCHROOT.CON(5)