Alcuni amministratori dividono le jail nei seguenti due tipi: jail «complete», che sono simili ad un sistema FreeBSD reale, e jail «di servizio», dedicate ad un'unica applicazione o servizio, possibilmente in esecuzione con privilegi. Questa è solo una divisione concettuale ed il processo di creazione della jail non viene modificato da ciò. La pagina man jail(8) è abbastanza chiara a riguardo della procedura di creazione di una jail:
#
setenv D /qui/c'e'/la/jail
#
mkdir -p $D
![]()
#
cd /usr/src
#
make world DESTDIR=$D
![]()
#
cd etc/
[7]#
make distribution DESTDIR=$D
![]()
#
mount_devfs devfs $D/dev
![]()
Selezionare una directory per la jail è il miglior punto in cui iniziare. Questo sarà il punto in cui la jail risiederà fisicamente nel file system del sistema host. Una buona scelta può essere
/usr/jail/nomejail
, dovenomejail
è il nome host che identifica la jail. Il file system/usr/
in genere ha abbastanza spazio vuoto per il file system delle jail, che per una jail «completa» è, in pratica, una replica di ogni file presente in una installazione base di FreeBSDQuesto comando popolerà la sotto-directory scelta come locazione fisica della jail con i binari necessari, le librerie, le pagine man e cosí via. Tutto è fatto nello stile tipico di FreeBSD - prima tutto viene creato/compilato, poi installato nel percorso di destinazione.
Il target
distribution
per make installa ogni file di configuazione richiesto. In parole povere, installa ogni file di/usr/src/etc/
nella directory/etc
dell'ambiente jail:$D/etc/
.Non è richiesto di montare il file system devfs(8) all'interno della jail. D'altro lato, ogni applicazione o quasi ha bisogno di accedere ad almeno un dispositivo, a seconda dello scopo dell'applicazione stessa. È molto importante controllare l'accesso ai dispositivi dall'interno della jail, dato che con dei settaggi impropri un attaccante potrebbe compiere azioni dannose nella jail. Il controllo su devfs(8) è gestito attraverso le regole che sono descritte nelle pagine man di devfs(8) e devfs.conf(5).
Una volta che una jail è installata, può essere
avviata usando l'utility jail(8). L'utility jail(8)
prende quattro argomenti obbligatori che sono descritti nella
Sezione 15.3.1, «Cosa è una Jail». Possono essere specificati altri argomenti,
ad esempio, per eseguire il programma nella jail con le credenziali
di un utente specifico. L'argomento
dipende dal tipo di jail; per un sistema virtuale,
comando
/etc/rc
è una buona scelta, dato che
replicherà la sequenza di avvio di un sistema FreeBSD reale.
Per una jail di servizio, dipenderà
dal servizio o dalla applicazione che sarà eseguita
all'interno della jail.
Le jail spesso sono avviate al momento di boot
e il meccanismo rc
di FreeBSD fornisce
un modo semplice per farlo.
Una lista delle jail che sono abilitate al boot dovrebbe essere aggiunta al file rc.conf(5):
jail_enable="YES" # NO per disabilitare l'avvio delle jail
jail_list="www
" # Lista dei nomi delle jail separati da spazi
Per ogni jail elencata in jail_list
,
dovrebbe essere aggiunto un gruppo di impostazioni di rc.conf(5),
che descrive la jail:
jail_www
_rootdir="/usr/jail/www" # directory root della jail jail_www
_hostname="www
.example.org" # nome-host della jail jail_www
_ip="192.168.0.10" # indirizzo IP della jail jail_www
_devfs_enable="YES" # dispositivi di mount devfs nella jail jail_www
_devfs_ruleset="www_ruleset
" # regole devfs da applicare alla jail
L'avvio di default delle jail configurate in
rc.conf(5) eseguirà lo script
della jail in /etc/rc
, che assume che la
jail sia un completo sistema virtuale. Per jail di servizio,
il comando di default di avvio della jail dovrebbe essere cambiato,
impostando l'opzione
jail_
in modo appropriato.nomejail
_exec_start
Per una lista completa delle opzioni disponibili, per favore consulta la pagina man rc.conf(5).
Lo script /etc/rc.d/jail
può
essere usato per avviare o fermare una jail a mano, se esiste una entry
in rc.conf
:
#
/etc/rc.d/jail start www
#
/etc/rc.d/jail stop www
Un modo pulito per spegnere una jail(8) non è disponibile al momento. Questo perchè i comandi usati normalmente per fare uno shutdown pulito non possono essere usati all'interno della jail. Il modo migliore per spegnere una jail è eseguire il seguente comando all'interno della jail stessa o usando l'utility jexec(8) da fuori della jail:
#
sh /etc/rc.shutdown
Maggiori informazioni al riguardo possono essere trovate nella pagina man jail(8).
Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Per domande su FreeBSD, leggi la
documentazione prima di contattare
<questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a
<doc@FreeBSD.org>.