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
| |
Questo 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 | |
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>.