BSD-Wiki

Mitschrift einer FreeBSD-Installation

Benutzer-Werkzeuge

Webseiten-Werkzeuge


jail_erstellen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Nächste Überarbeitung
Vorherige Überarbeitung
jail_erstellen [2014/02/11 22:09]
rakor angelegt
jail_erstellen [2017/10/02 13:40] (aktuell)
Zeile 24: Zeile 24:
  
 ====== Installation aus Binärpaketen ====== ====== Installation aus Binärpaketen ======
-Um das System ​nun zu installieren wird in das neue Verzeichnis gewechselt:+Zur Installation der Jail aus Binärpaketen kann //​bsdinstall//​ verwendet werden, welches bereits aus der Installation des Basissystems bekannt ist.  
 +Wird //​bsdinstall//​ verwendet um eine Jail zu installieren muss es wissen welche FreeBSD-Version es installieren soll. Um dies herauszufinden fragt es **uname -r** ab. Da die Installationsquellen für //​bsdinstall//​ nur für die Veröffentlichungsversionen (z.B. 10.0-RELEASE) und nicht für darauf aufsetzende Patchversionen (z.B. 10.0-RELEASE-p7) vorhanden sind muss im Allgemeinen //​bsdinstall//​ ein falscher Wert für **uname -r** untergeschoben werden. Hierzu kann die Umgebungsvariable **UNAME_r** gesetzt werden. 
 + 
 +Um z.B. auf einem FreeBSD 10.0 System ​eine Jail zu installieren wird die Variable **UNAME_r** wie folgt gesetzt.
 <​code>​ <​code>​
-cd /​usr/​local/​jails/​testjail+sentenv UNAME_r 10.0-RELEASE
 </​code>​ </​code>​
  
-und das System installiert:​+Hiermit liefert **uname -r** nun den gewünschten Wert.
  
-Für amd64+Nun kann mittels //​bsdinstall//​ die Installation begonnen werden.
 <​code>​ <​code>​
-fetch -q -o - ftp://ftp.freebsd.org/pub/FreeBSD/​releases/​amd64/​amd64/​9.1-RELEASE/​base.txz ​  | tar xpf - +bsdinstall jail /usr/local/jails/testjail
-# fetch -q -o - ftp://​ftp.freebsd.org/​pub/​FreeBSD/​releases/​amd64/​amd64/​9.1-RELEASE/​lib32.txz ​ | tar xpf - +
-# fetch -q -o - ftp://​ftp.freebsd.org/​pub/​FreeBSD/​releases/​amd64/​amd64/​9.1-RELEASE/​src.txz ​   | tar xpf -+
 </​code>​ </​code>​
  
-Für i386 +Zunächst wird hier der Server ausgewählt von welchem die Installationsdateien heruntergeladen werden (falls nicht bereits bei einer vorherigen Installation geschehen). Anschiessend sind die zu installierenden Sets auszuwählen und der Download und deren Installation beginnt. 
 + 
 +Nun wird noch das **root**-Kennwort gesetzt und ausgewählt welche Standarddienste in der Jail automatisch gestartet werden sollen (//​dumpdev//​ sollte hier abgewählt werden wenn es nicht wirklich benötigt wird) und das **root**-Kennwort gesetzt. Abschliessend kann noch ein normaler Benutzeraccount angelegt werden und die Installation ist beendet. 
 + 
 +Um das installierte Basisversion nun noch mit den aktuellen binären Patchlevel zu versorgen wird //​freebsd-update//​ verwendet. Hierzu muss **UNAME_r** noch auf der Veröffentlichungsversion gesetzt bleiben.
 <​code>​ <​code>​
-fetch --o - ftp://ftp.freebsd.org/pub/FreeBSD/​releases/​i386/​i386/​9.1-RELEASE/​base.txz ​  | tar xpf - +freebsd-update ​-/usr/local/jails/testjail ​fetch install
-fetch -q -o - ftp://​ftp.freebsd.org/​pub/​FreeBSD/​releases/​i386/​i386/​9.1-RELEASE/​src.txz ​   | tar xpf -+
 </​code>​ </​code>​
-Auf einem FreeBSD-Installationsmedium finden sich die Pakete im Übrigen unter ///​usr/​freebsd_dist//​. Somit spart man sich den Download. 
  
-Weiter geht es dann mit: [[Jail_erstellen#Jail_einrichten | Jail einrichten]]+Nun kann **UNAME_r** wieder zurückgesetzt werden, damit es in Zukunft wieder den korrekten Patchlevel liefert. 
 +<​code>​ 
 +unsetenv UNAME_r 
 +</​code>​
  
 +Weiter geht es dann mit: [[Jail_erstellen#​Jail_einrichten | Jail einrichten]]
 ====== Installation aus den Systemquellen ====== ====== Installation aus den Systemquellen ======
 Die Installation aus den Systemquellen dauert länger und ist aufwändiger. Für ein normales System lohnt sich der Mehraufwand iA nicht so keine besonderen Kompileroptionen gewünscht werden. Die Installation aus den Systemquellen dauert länger und ist aufwändiger. Für ein normales System lohnt sich der Mehraufwand iA nicht so keine besonderen Kompileroptionen gewünscht werden.
Zeile 69: Zeile 76:
  
 ====== Jail einrichten ====== ====== Jail einrichten ======
-Sollte es notwendig sein, dass das **devfs** zum Zugriff auf Gerätedateien ​in der Jail vorhanden ist wird es durch folgenden Aufruf eingebunden:​ +Wurde die Jail **nicht** per //​bsdinstall//​ installiert muss noch der Nameserver ​in der //etc/resolv.conf// der Jail definiert werden. Hierzu wird die Namensauflösung des Hostsystems übernommen.
-<​code>​ +
-# mount -t devfs devfs /usr/local/jails/testjail/dev +
-</​code>​ +
- +
-Nun muss nur noch die Namensauflösung des Hostsystems übernommen ​und eine leere **fstab** angelegt werden.+
 <​code>​ <​code>​
 cp /​etc/​resolv.conf /​usr/​local/​jails/​testjail/​etc/​resolv.conf cp /​etc/​resolv.conf /​usr/​local/​jails/​testjail/​etc/​resolv.conf
-touch /​usr/​local/​jails/​testjail/​etc/​fstab 
 </​code>​ </​code>​
  
Zeile 100: Zeile 101:
 </​code>​ </​code>​
  
-===== IP-Adresse festlegen ​===== +===== Hostnamen setzen ​===== 
-Da die Jail eine eigene IP-Adresse haben kann muss diese zunächst im Hostsystem als alias auf eine bestehende Netzwerkkarte ​festgelegt werden.+Der Hostname ​muss noch festgelegt werden. Hierzu wird die Datei **/​usr/​local/​jails/​testjail/​etc/​hosts** entsprechend [[Installation#​Hostnamen_in_/​etc/​hosts_setzen|angepasst]].
  
-Der folgende Eintrag ​in der ///etc/rc.conf// ​legt festdass das Netzwerkdevice **em0** als Alias die Adresse **192.168.2.100** erhält. Die letzte Ziffer (in diesem Fall die 0) beim **alias**-Teil des Aufrufs ist eine fortlaufende Nummer.+====== Anpassen des Hostsystems ====== 
 +Spätestens seit FreeBSD 10 werden Jails in einer eigenen Konfigurationsdatei des Hostsystems, ​der ///etc/jail.conf//, ​verwaltet.
  
-Sollte die Netzmaske die Standardmaske ​//255.255.255.0// sein kann die folgendevereinfachte Anweisung verwendt werden. +===== jail.conf ===== 
-<​code>​ +Die //jail.conf// besteht aus einem allgemeinen Teilder grundlegende Einstellungen für alle Jails enthält, und einem Teil der die speziellen Einstellungen jeder einzelnen Jail definiert.
-ifconfig_em0_alias0="​192.168.1.100"​ +
-</​code>​+
  
-Weicht die Netzmaske von der oben genannten ab kann diese der Anweisung mitgegeben werden. Der allgemeinere Ansatz (welcher in diesem Beispiel die Netzmaske 0xffffffe0 nutzt) ist daher: 
 <​code>​ <​code>​
-ifconfig_em0_alias0="​inet 192.168.1.100 netmask 0xffffffe0"​ +##########################################​ 
-</​code>​ +###### Allgemeine Einstellungen ​    ######​
-Die Netzmaske kann in dezimaler oder in hexadezimaler Form angegeben werden.+
  
-===== Hostnamen setzen ===== +# Jailstart 
-Der Hostname muss noch festgelegt werdenHierzu wird die Datei **/usr/local/​jails/​testjail/etc/hosts** entsprechend [[Installation#​Hostnamen_in_.2Fetc.2Fhosts_setzen|angepasst]].+exec.start="​/bin/sh /etc/rc";
  
-====== Anpassen des Hostsystems ======+# Jailstop 
 +exec.stop="/​bin/​sh /​etc/​rc.shutdown";​ 
 + 
 +# Aufraeumen 
 +exec.clean;​ 
 + 
 +# Devfs mounten 
 +mount.devfs;​ 
 + 
 +# Netzwerkkarte 
 +interface="​em0";​ 
 + 
 +##########################################​ 
 +###### Per Jail Einstellungen ​      ######​ 
 + 
 +testjail { 
 +  host.hostname ​"​testjail.example.com";​ 
 +  path /​usr/​local/​jails/​testjail;​ 
 +  ip4.addr ​"​www.xxx.yyy.zzz";​ 
 +
 +</​code>​ 
 + 
 +Für jede weitere Jail wird ein neuer Abschnitt in den unteren Teil eingefügt.
 ===== Jail im RC-System eintragen ===== ===== Jail im RC-System eintragen =====
 Um die Jail dem System bekannt zu machen und auf einfache Weise über das RC-System starten zu können wird die Datei ///​etc/​rc.conf//​ noch angepasst. Um die Jail dem System bekannt zu machen und auf einfache Weise über das RC-System starten zu können wird die Datei ///​etc/​rc.conf//​ noch angepasst.
Zeile 127: Zeile 147:
 jail_enable="​YES"​ jail_enable="​YES"​
 jail_list="​testjail"​ jail_list="​testjail"​
- 
-jail_testjail_rootdir="/​usr/​local/​jails/​testjail"​ 
-jail_testjail_hostname="​testjail.rakors-welt"​ 
-jail_testjail_ip="​192.168.2.100"​ 
-jail_testjail_devfs_enable="​YES"​ 
-jail_testjail_procfs_enable="​YES"​ 
 </​code>​ </​code>​
  
 Der Eintrag **jail_enable** definiert ob Jails prinzipiell gestartet werden oder nicht. Unter **jail_list** wird eine durch Leerzeichen getrennte Liste von Jailnamen erwartet welche beim Systemstart automatisch gestartet werden sollen. Der Eintrag **jail_enable** definiert ob Jails prinzipiell gestartet werden oder nicht. Unter **jail_list** wird eine durch Leerzeichen getrennte Liste von Jailnamen erwartet welche beim Systemstart automatisch gestartet werden sollen.
  
-Die folgenden Zeilen sind für jede Jail angepasst zu erzeugen und sollten selbsterklärend sein. Ohne ein devfs in der Jail sind einige DInge wie z.B. ssh-Zugriffe nicht möglich. 
-Das procfs wird von einigen Diensten benötigt. Es ist jedoch für den reinen Betrieb der Jail nicht notwendig. 
  
 ===== Lauschende Ports auf Host-IP beschränken ===== ===== Lauschende Ports auf Host-IP beschränken =====
Zeile 151: Zeile 163:
  
 ====== Jail starten und anhalten ====== ====== Jail starten und anhalten ======
-Ist die Jail in ///​etc/​rc.conf//​ definiert ​kann sie recht einfach ​gestartet und gestoppt ​werden. ​Mit den folgenden Befehlen wird die Jail gestartet bzw angehalten:+Die Jail kann dann mit den folgenden Befehlen ​gestartet und wieder beendet ​werden. 
 <​code>​ <​code>​
-/etc/rc.d/jail start testjail +# jail -c testjail 
-/etc/rc.d/jail stop testjail+# jail -r testjail
 </​code>​ </​code>​
  
-Sollte das Starten und Stoppen ​der Jail nicht direkt funktionieren wurde ggf. der Netzwerkalias noch nicht geladen. Hierzu entweder //​ifconfig//​ von Hand ausführen oder den Host neu starten. +Dabei steht **-c** für **create** zum Starten ​der Jail und **-r** für **remove** zum Beenden ​der Jail.
 ====== Jails auflisten ====== ====== Jails auflisten ======
 Eine Liste aller laufender Jails findet sich mit dem Befehlt **jls**. Dieser zeigt auch gleich die zur Jail zugehörigen ID **JID** die benötigt wird um z.B. über **jexec** mit der Jail zu kommunizieren. Eine Liste aller laufender Jails findet sich mit dem Befehlt **jls**. Dieser zeigt auch gleich die zur Jail zugehörigen ID **JID** die benötigt wird um z.B. über **jexec** mit der Jail zu kommunizieren.
  
 ====== In der Jail arbeiten (Shell in der Jail) ====== ====== In der Jail arbeiten (Shell in der Jail) ======
-Um in der laufenden Jail eine Shell zu öffnen um hierin zu arbeiten wird der Befehl **jexec** verwendet. Hierzu muss die Jail laufen. ​Unter der Annahme, dass die **JID** der Jail **3** wäre lautet der Aufruf wie folgt (die JID wird im Allgemeinen abweichen und ist über **jls** heraus zu finden):+Um in der laufenden Jail eine Shell zu öffnen um hierin zu arbeiten wird der Befehl **jexec** verwendet. Hierzu muss die Jail laufen.
 <​code>​ <​code>​
-# jexec /bin/sh+# jexec testjail ​/bin/sh
 </​code>​ </​code>​
  
 +Alternativ kann eine Shell in der Jail mit dem folgenden Befehl gestartet werden:
 +<​code>​
 +# /​etc/​rc.d/​jail console testjail
 +</​code>​
 ====== Rootkennwort ändern und Benutzer anlegen ====== ====== Rootkennwort ändern und Benutzer anlegen ======
 +Wurde die Jail per //​bsdinstall//​ installiert wurde das root-Kennwort bereits gesetzt. Wurde die Installation jedoch aus den Systemquellen installiert muss noch das Kennwort des Benutzers root gesetzt werden.
 Nach dem Login in die Jail per **jexec** sollte das Kennwort des **root**-Benutzers mittels **passwd** geändert werden. ​ Nach dem Login in die Jail per **jexec** sollte das Kennwort des **root**-Benutzers mittels **passwd** geändert werden. ​
  
-Anschliessend ist es noch sinnvoll ​per **adduser** ​einen Useraccount anzulegen+Sollen ​noch normale Benutzer angelegt werden kann dies per **adduser** ​erfolgen.
 Dieser kann z.B. für einen SSH-Login verwendet werden wenn man root-Logins per ssh verbieten möchte. Dieser kann z.B. für einen SSH-Login verwendet werden wenn man root-Logins per ssh verbieten möchte.
  
Zeile 205: Zeile 222:
 Damit die Ports nun auch gebaut werden können muss dem Gastsystem noch ein alternatives Verzeichnis mit Schreibrechten zugeteilt werden. ​ Damit die Ports nun auch gebaut werden können muss dem Gastsystem noch ein alternatives Verzeichnis mit Schreibrechten zugeteilt werden. ​
 Die Datei **/​etc/​make.conf** hält diese Informationen. Um die gewünschte Änderung durchzuführen wird die Datei wie folgt ergänzt, oder nötigenfalls erzeugt: Die Datei **/​etc/​make.conf** hält diese Informationen. Um die gewünschte Änderung durchzuführen wird die Datei wie folgt ergänzt, oder nötigenfalls erzeugt:
-<code>+<file Bash>
 WRKDIRPREFIX=/​tmp WRKDIRPREFIX=/​tmp
 DISTDIR=/​tmp/​distfiles DISTDIR=/​tmp/​distfiles
 PACKAGES=/​tmp/​packages PACKAGES=/​tmp/​packages
-</code>+</file>
  
 Nun werden die Arbeitsdaten der Ports unter /tmp des Gastsystems abgelegt und der Ports-Tree wird nicht durch die Ports geändert. Nun werden die Arbeitsdaten der Ports unter /tmp des Gastsystems abgelegt und der Ports-Tree wird nicht durch die Ports geändert.
Zeile 218: Zeile 235:
 ====== Jail aktualisieren ====== ====== Jail aktualisieren ======
 Die Vorgehensweise um eine Jail zu aktualisieren wird im Artikel [[Jail aktualisieren]] beschrieben. Die Vorgehensweise um eine Jail zu aktualisieren wird im Artikel [[Jail aktualisieren]] beschrieben.
- 
jail_erstellen.1392152977.txt.gz · Zuletzt geändert: 2017/10/02 13:38 (Externe Bearbeitung)

Impressum