Sommige beheerders kiezen ervoor om jails op te delen in de volgende twee types: “complete” jails, welke een volledig FreeBSD systeem emuleert en “service” jails, gericht op één applicatie of dienst, mogelijkerwijs draaiende met privileges. Dit is alleen een conceptuele splitsing, de manier van het opbouwen van een jail wordt hierdoor niet veranderd. De jail(8) handleiding is heel duidelijk over de procedure voor het maken van een jail:
#
setenv D /here/is/the/jail
#
mkdir -p $D
#
cd /usr/src
#
make buildworld
#
make installworld DESTDIR=$D
#
make distribution DESTDIR=$D
#
mount -t devfs devfs $D/dev
Het selecteren van een locatie voor een jail is het beste
beginpunt. Hier zal de jail fysiek te vinden zijn binnen
het bestandssysteem van het host systeem. Een goede keuze
kan | |
Als u uw userland al heeft herbouwd met
| |
Dit commando zal de gekozen fysieke directory vullen met de benodigde binaire bestanden, bibliotheken, handleidingen, etc. | |
Het | |
Het koppelen van het devfs(8) bestandssysteem is niet vereist in een jail. Aan de andere kant, vrijwel elke applicatie heeft toegang nodig tot minstens één apparaat, afhankelijk van het doel van het programma. Het is erg belangrijk om toegang tot apparaten te controleren binnenin een jail, omdat incorrecte instellingen een aanvaller de mogelijkheid kunnen geven om vervelende dingen in de jail te doen. De controle over devfs(8) wordt gedaan door middel van rulesets, welke beschreven worden in de devfs(8) en devfs.conf(5) handleidingen. |
Zodra een jail is geïnstalleerd, kan het opgestart worden
door de jail(8) applicatie. De jail(8) applicatie
heeft vier benodigde argumenten welke beschreven worden in
Paragraaf 16.3.1, “Wat is een jail”. Er kunnen ook andere argumenten
gebruikt worden, om bijvoorbeeld de jail te starten met de
instellingen van een specifieke gebruiker. Het
argument
hangt af van het type jail, voor een
virtueel systeem is
commando
/etc/rc
een goede keuze, omdat het de
reguliere opstart procedure nabootst van een FreeBSD systeem.
Voor een dienst jail is het geheel afhankelijk
van de dienst of applicatie die in de jail gaat draaien.
Jails worden over het algemeen gestart tegelijkertijd met
de rest van het systeem. Het FreeBSD rc
mechanisme levert een makkelijke manier om dat te doen:
Een lijst van jails die opgestart moeten worden tijdens het opstarten van het systeem, moeten worden toegevoegd aan het rc.conf(5) bestand:
www
" # Door spaties gescheiden lijst van jailsDe jail namen in jail_list
mogen alleen
alfanumerieke karakters bevatten.
Voor elke jail die gespecificeerd is in
jail_list
moet een groep van rc.conf(5)
instellingen worden toegevoegd:
www
_rootdir="/usr/jail/www" # de hoofd directory van de jail
jail_www
_hostname="www
.example.org" # de hostnaam van de jail
jail_www
_ip="192.168.0.10" # het IP adres van de jail
jail_www
_devfs_enable="YES" # moet devfs wel of niet gekoppeld worden in de jail
jail_www
_devfs_ruleset="www_ruleset
" # welke devfs ruleset gebruikt moet worden voor de jailDe standaard opstart variabelen in rc.conf(5)
gebruiken het /etc/rc
bestand om de jail
op te starten, wat er vanuit gaat dat de jail een compleet
virtueel systeem is. Voor service jails moet het standaard
opstart commando worden gewijzigd door het aanpassen van de
jail_
optie.jailname
_exec_start
Voor een complete lijst van beschikbare opties, zie de rc.conf(5) handleiding.
service(8) kan worden gebruikt om jails handmatig te starten en
te stoppen, mits er een overeenkomstige verzameling regels bestaat in
/etc/rc.conf
.
#
service jail start www
#
service jail stop www
Er is op dit moment geen nette methode om een jail te stoppen. Dit komt omdat de benodigde applicaties die een nette afsluiting verzorgen, niet beschikbaar zijn in een jail. De beste manier om een jail af te sluiten is door het volgende commando van binnenin de jail uit te voeren of door middel van het jexec(8) commando:
#
sh /etc/rc.shutdown
Meer informatie hierover kan gevonden worden in de jail(8) handleiding.