Μερικοί διαχειριστές συστημάτων κατηγοριοποιούν τα jails σε δύο ενότητες: τα «complete (πλήρη)» jails, τα οποία μιμούνται ένα πραγματικό σύστημα FreeBSD, και τα «service» jails, τα οποία χρησιμοποιούνται για μια εφαρμογή ή υπηρεσία, που πιθανόν εκτελείται με ειδικά προνόμια. Αυτός είναι ένας νοητικός διαχωρισμός και δεν επιδρά στη διαδικασία δημιουργίας ενός jail. Η σελίδα manual του jail(8) περιέχει κατατοπιστικές πληροφορίες για τη διαδικασία δημιουργίας ενός 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
![]()
Ο καλύτερος τρόπος για να ξεκινήσετε είναι με την επιλογή μιας θέσης (διαδρομής) για το jail σας. Εκεί θα βρίσκονται αποθηκευμένα τα αρχεία του jail όσο αφορά το σύστημα σας. Μια καλή ιδέα είναι το
/usr/jail/jailname
, όπουjailname
το hostname με το οποίο θα αναγνωρίζεται το jail. Το σύστημα αρχείων/usr/
έχει συνήθως αρκετό χώρο για το σύστημα αρχείων του jail, το οποίο, για ένα «complete» jail είναι ουσιαστικά ένας κλώνος κάθε αρχείου του βασικού συστήματος μια προεπιλεγμένης εγκατάστασης του FreeBSD.Το βήμα αυτό δεν απαιτείται αν έχετε μεταγλωττίσει στο παρελθόν το βασικό σύστημα χρησιμοποιώντας την εντολή
make world
ήmake buildworld
. Μπορείτε απλώς να εγκαταστήσετε το υπάρχον σύστημα σας στο νέο jail.Η εντολή αυτή θα εμπλουτίσει τον κατάλογο που επιλέξατε για το jail με όλα τα απαραίτητα αρχεία, βιβλιοθήκες, σελίδες βοήθειας κλπ.
Το
distribution
target του make εγκαθιστά όλα τα αρχεία ρυθμίσεων που απαιτούνται. Με απλά λόγια, εγκαθιστά κάθε αρχείο από το/usr/src/etc/
στον κατάλογο/etc
του περιβάλλοντος jail:$D/etc/
.Δε χρειάζεται να προσαρτήσετε το devfs(8) στο περιβάλλον του jail. Από την άλλη όμως, όλες, ή σχεδόν όλες οι εφαρμογές χρειάζονται πρόσβαση σε τουλάχιστον μία συσκευή, αναλόγως με τον σκοπό της εφαρμογής. Είναι πολύ σημαντικό να ελέγχεται η πρόσβαση στις συσκευές μέσα σε ένα jail, καθώς λανθασμένες ρυθμίσεις μπορεί να επιτρέψουν σε κάποιον εισβολέα να κάνει «άσχημα παιχνίδια» μέσα στο jail. Ο έλεγχος του devfs(8) γίνεται μέσω ενός συνόλου κανόνων οι οποίοι περιγράφονται στις σελίδες manual του devfs(8) και του devfs.conf(5).
Από την στιγμή που έχει εγκατασταθεί ένα jail, μπορεί να εκκινηθεί
με τη χρήση της εντολής jail(8). Η jail(8) δέχεται τέσσερις
υποχρεωτικές παραμέτρους οι οποίες περιγράφονται στο
Τμήμα 16.3.1, «Τι Είναι Ένα Jail». Μπορείτε να δώσετε και άλλες παραμέτρους,
π.χ., για να εκτελέσετε μια διεργασία στο περιβάλλον του jail με τις
άδειες ενός συγκεκριμένου χρήστη.
Η παράμετρος
εξαρτάται από τον τύπο του jail. Για ένα
εικονικό σύστημα, το command
/etc/rc
είναι μια καλή επιλογή, μια και στην ουσία θα κλωνοποιήσει
την διαδικασία εκκίνησης ενός πραγματικού συστήματος FreeBSD. Για ένα
service jail, η παράμετρος εξαρτάται από την
υπηρεσία ή την εφαρμογή που θα τρέχει μέσα στο jail.
Τα jails συνήθως ξεκινούν κατά την εκκίνηση και ο μηχανισμός
rc
του FreeBSD παρέχει έναν εύκολο τρόπο για να γίνει
κάτι τέτοιο.
Η λίστα με τα jails που θέλετε να ξεκινάνε κατά την εκκίνηση θα πρέπει να προστεθούν στο αρχείο rc.conf(5):
jail_enable="YES" # Set to NO to disable starting of any jails
jail_list="www
" # Space separated list of names of jails
Το όνομα που έχει κάθε jail στη
λίστα jail_list
επιτρέπεται να περιέχει μόνο
αλφαριθμητικούς χαρακτήρες.
Για κάθε jail που υπάρχει στο jail_list
, θα
πρέπει να προστεθεί μια ομάδα από ρυθμίσεις στο rc.conf(5), οι
οποίες θα το περιγράφουν:
jail_www
_rootdir="/usr/jail/www" # jail's root directory jail_www
_hostname="www
.example.org" # jail's hostname jail_www
_ip="192.168.0.10" # jail's IP address jail_www
_devfs_enable="YES" # mount devfs in the jail jail_www
_devfs_ruleset="www_ruleset
" # devfs ruleset to apply to jail
Η προεπιλεγμένη εκκίνηση του jail μέσω του
rc.conf(5), θα ξεκινήσει το script του jail
/etc/rc
, το οποίο υποθέτει ότι το jail είναι
ένα ολοκληρωμένο εικονικό σύστημα. Για service jails, η
προεπιλεγμένη εκκίνηση πρέπει να αλλάξει, ορίζοντας κατάλληλα την
επιλογή jail_
.jailname
_exec_start
Για πλήρη λίστα των διαθέσιμων επιλογών, δείτε το rc.conf(5).
Το script /etc/rc.d/jail
μπορεί να
χρησιμοποιηθεί για να ξεκινήσει ή να σταματήσει κάποιο jail
χειροκίνητα. Πρέπει όμως να υπάρχει η αντίστοιχη καταχώρηση στο
rc.conf
:
#
/etc/rc.d/jail start www
#
/etc/rc.d/jail stop www
Για την ώρα δεν υπάρχει κάποιος απόλυτα σωστός τρόπος για να τερματίσετε κάποιο jail(8). Αυτό συμβαίνει, διότι οι εντολές που χρησιμοποιούνται συνήθως για να τερματίσουν με ασφάλεια ένα σύστημα, δεν μπορούν να χρησιμοποιηθούν μέσα στο περιβάλλον ενός jail. Ο καλύτερος τρόπος για να τερματίσετε ένα jail είναι με την εκτέλεση της ακόλουθης εντολής μέσα από το ίδιο το jail ή με χρήση του βοηθητικού προγράμματος jexec(8) έξω από αυτό:
#
sh /etc/rc.shutdown
Περισσότερες πληροφορίες σχετικά με αυτή τη διαδικασία μπορείτε να βρείτε στη σελίδα βοηθείας του jail(8)
Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την
τεκμηρίωση πριν να επικοινωνήσετε με την
<questions@FreeBSD.org>.
Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην
<doc@FreeBSD.org>.