Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
jail_erstellen [2014/09/03 21:25] rakor Umstellung der Binärinstallation auf bsdinstall |
jail_erstellen [2017/10/02 13:40] (aktuell) |
||
---|---|---|---|
Zeile 76: | 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 107: | 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 fest, dass 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. | ||
+ | |||
+ | ===== jail.conf ===== | ||
+ | Die //jail.conf// besteht aus einem allgemeinen Teil, der grundlegende Einstellungen für alle Jails enthält, und einem Teil der die speziellen Einstellungen jeder einzelnen Jail definiert. | ||
- | Sollte die Netzmaske die Standardmaske //255.255.255.0// sein kann die folgende, vereinfachte Anweisung verwendt werden. | ||
<code> | <code> | ||
- | ifconfig_em0_alias0="192.168.1.100" | + | ########################################## |
- | </code> | + | ###### Allgemeine Einstellungen ###### |
- | 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: | + | # Jailstart |
- | <code> | + | exec.start="/bin/sh /etc/rc"; |
- | ifconfig_em0_alias0="inet 192.168.1.100 netmask 0xffffffe0" | + | |
- | </code> | + | |
- | Die Netzmaske kann in dezimaler oder in hexadezimaler Form angegeben werden. | + | |
- | ===== Hostnamen setzen ===== | + | # Jailstop |
- | Der Hostname muss noch festgelegt werden. Hierzu wird die Datei **/usr/local/jails/testjail/etc/hosts** entsprechend [[Installation#Hostnamen_in_/etc/hosts_setzen|angepasst]]. | + | exec.stop="/bin/sh /etc/rc.shutdown"; |
- | ====== Anpassen des Hostsystems ====== | + | # 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 134: | 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 158: | 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 3 /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 212: | 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 225: | 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. | ||
- |