Einige Administratoren unterscheiden zwei verschiedene Jail-Arten: „Komplette“ Jails, die ein echtes FreeBSD darstellen und Jails für einen bestimmten „Dienst“, die nur einer bestimmten Anwendung oder einem Dienst (der möglicherweise mit besonderen Privilegien laufen soll) gewidmet sind. Dies ist aber nur eine konzeptuelle Unterscheidung, die Einrichtung einer Jail bleibt davon gänzlich unberührt.
#
setenv D /hier/ist/die/jail
#
mkdir -p $D
#
cd /usr/src
#
make buildworld
#
make installworld DESTDIR=$D
#
make distribution DESTDIR=$D
#
mount -t devfs devfs $D/dev
Das Festlegen des Installationsorts für das Jail
eignet sich am besten als Startpunkt. Hier wird sich die
Jail innerhalb des Host-Dateisystems befinden. Eine gute
Möglichkeit wäre etwa | |
Wenn Sie bereits ihre Systemanwendungen mittels
| |
Dieser Befehl wird den Verzeichnisbaum mit allen notwendigen Binärdateien, Bibliotheken, Manualpages usw. erstellen. | |
Der | |
Das Einhängen des devfs(8)-Dateisystems innerhalb der Jail ist nicht unbedingt notwendig. Allerdings benötigt fast jede Anwendung Zugriff auf wenigstens ein Gerät. Es ist daher sehr wichtig, den Zugriff auf Devices aus der Jail heraus zu kontrollieren, da unsaubere Einstellungen es einem Angreifer erlauben könnten, in das System einzudringen. Die Kontrolle über devfs(8) erfolgt durch die in den Manualpages devfs(8) und devfs.conf(5) beschriebenen Regeln. |
Ist eine Jail einmal erst erstellt, kann sie durch
jail(8) gestartet werden. jail(8) benötigt
zwingend mindestens vier Argumente, die im Abschnitt Abschnitt 16.3.1, „Was ist eine Jail?“ des Handbuchs beschrieben sind. Weitere
Argumente sind möglich, um beispielsweise die Jail mit den
Berechtigungen eines bestimmten Benutzers laufen zu lassen. Das
Argument
hängt vom Typ der Jail ab; für ein virtuelles
System ist command
/etc/rc
eine gute
Wahl, da dies dem Startvorgang eines echten FreeBSD-Systems
entspricht. Bei einer Service-Jail
hängt dieses von der Art des Dienstes ab, der in der Jail
laufen soll.
Jails werden häufig mit dem Betriebssystem gestartet,
da der rc
-Mechanismus von FreeBSD dafür
eine einfach zu realisierende Möglichkeit bietet.
Eine Liste der Jails, die mit dem Betriebssystem gestartet werden sollen, wird in die Datei rc.conf(5) geschrieben:
www
" # Space separated list of names of jailsDie Namen der Jails in der
jail_list
sollten nur alphanumerische
Zeichen enthalten.
Für jede Jail in der jail_list
sollten in rc.conf(5) einige Einstellungen
vorgenommen werden:
www
_rootdir="/usr/jail/www" # jail's root directory
jail_www
_hostname="www
.example.org" # jail's hostname
jail_www
_ip="192.168.0.10" # jail's IP address
jail_www
_devfs_enable="YES" # mount devfs in the jail
jail_www
_devfs_ruleset="www_ruleset
" # devfs ruleset to apply to jailBeim Start einer in rc.conf(5) konfigurierten Jail
wird das /etc/rc
-Skript der Jail (das
"annimmt", dass es sich in einem kompletten System befindet)
aufgerufen. Für Service-Jails sollten die Startskripte
der Jail durch das Setzen der Option
jail_
entsprechend angepasst werden.jailname
_exec_start
Eine vollständige Liste der Optionen findet sich in der Manualpage zu rc.conf(5).
Das /etc/rc.d/jail
-Skript kann
zum manuellen Starten und Stoppen der Jail genutzt werden,
wenn ein Eintrag in rc.conf
angelegt
wurde:
#
/etc/rc.d/jail start www
#
/etc/rc.d/jail stop www
Es gibt momentan keinen sauberen Weg, eine jail(8) zu stoppen. Dies liegt daran, dass die Kommandos zum sauberen Herunterfahren eines Systems innerhalb einer Jail nicht ausgeführt werden können. Der beste Weg eine Jail zu beenden ist es daher, innerhalb der Jail den folgenden Befehl auszuführen (alternativ können Sie auch jexec(8) von außerhalb der Jail aufrufen):
#
sh /etc/rc.shutdown
Weitere Informationen zu diesem Thema finden Sie in der Manualpage jail(8).
Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an
<de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an
<de-bsd-translators@de.FreeBSD.org>.