aboutsummaryrefslogtreecommitdiff
path: root/el_GR.ISO8859-7/books/handbook/jails/chapter.xml
diff options
context:
space:
mode:
Diffstat (limited to 'el_GR.ISO8859-7/books/handbook/jails/chapter.xml')
-rw-r--r--el_GR.ISO8859-7/books/handbook/jails/chapter.xml1032
1 files changed, 1032 insertions, 0 deletions
diff --git a/el_GR.ISO8859-7/books/handbook/jails/chapter.xml b/el_GR.ISO8859-7/books/handbook/jails/chapter.xml
new file mode 100644
index 0000000000..0149ef15ad
--- /dev/null
+++ b/el_GR.ISO8859-7/books/handbook/jails/chapter.xml
@@ -0,0 +1,1032 @@
+<?xml version="1.0" encoding="iso-8859-7" standalone="no"?>
+<!--
+
+ Το Εγχειρίδιο του FreeBSD: Jails
+
+ The FreeBSD Greek Documentation Project
+
+ $FreeBSD$
+
+ %SOURCE% en_US.ISO8859-1/books/handbook/jails/chapter.xml
+ %SRCID% 38826
+
+-->
+
+<chapter id="jails">
+ <chapterinfo>
+ <authorgroup>
+ <author>
+ <firstname>Matteo</firstname>
+ <surname>Riondato</surname>
+ <contrib>Συνεισφορά από τον </contrib>
+ </author>
+ </authorgroup>
+ </chapterinfo>
+
+ <title>Jails</title>
+
+ <indexterm><primary>jails</primary></indexterm>
+
+ <sect1 id="jails-synopsis">
+ <title>Σύνοψη</title>
+
+ <para>Το κεφάλαιο αυτό εξηγεί τι είναι τα jails (φυλακές) του &os; και
+ πως χρησιμοποιούνται. Τα jails, που αναφέρονται ορισμένες φορές σαν
+ μια ενισχυμένη εναλλακτική λύση για
+ <emphasis>περιβάλλοντα chroot</emphasis>, είναι ένα ισχυρό εργαλείο για
+ διαχειριστές συστημάτων, αλλά η βασική τους χρήση μπορεί επίσης να
+ είναι χρήσιμη σε προχωρημένους χρήστες.</para>
+
+ <para>Αφού διαβάσετε αυτό το κεφάλαιο, θα ξέρετε:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Τι είναι ένα jail και τι σκοπό μπορεί να εξυπηρετήσει σε
+ εγκαταστάσεις &os;.</para>
+ </listitem>
+
+ <listitem>
+ <para>Πως να φτιάξετε, να εκκινήσετε, και να σταματήσετε ένα
+ jail.</para>
+ </listitem>
+
+ <listitem>
+ <para>Τα βασικά της διαχείρισης ενός jail, τόσο μέσα, όσο και έξω
+ από αυτό.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Άλλες πηγές χρήσιμων πληροφοριών σχετικά με τα jails είναι:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Η σελίδα manual του &man.jail.8;. Περιέχει πλήρη αναφορά
+ του βοηθητικού προγράμματος <command>jail</command> &mdash;
+ του διαχειριστικού εργαλείου που μπορεί να χρησιμοποιηθεί στο &os;
+ για την εκκίνηση, διακοπή, και έλεγχο των jails.</para>
+ </listitem>
+
+ <listitem>
+ <para>Οι λίστες ταχυδρομείου και τα αρχεία τους. Τα αρχεία από την
+ &a.questions; και άλλες λίστες που εξυπηρετούνται από τον
+ &a.mailman.lists; περιέχουν πλήρη οδηγό για τα jails. Είναι πάντοτε
+ ενδιαφέρον να ψάχνετε τα αρχεία ή να δημοσιεύετε νέες ερωτήσεις
+ στη λίστα &a.questions.name;.</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1 id="jails-terms">
+ <title>Όροι των Jails</title>
+
+ <para>Για να κατανοήσετε καλύτερα το πως οι εσωτερικές λειτουργίες του
+ &os; σχετίζονται με τα jails και πως αυτές αλληλεπιδρούν με τα υπόλοιπα
+ μέρη του &os;, θα χρησιμοποιήσουμε εκτενώς τους παρακάτω όρους:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>&man.chroot.8; (εντολή)</term>
+ <listitem>
+ <para>Ένα βοηθητικό πρόγραμμα, το οποίο χρησιμοποιεί την κλήση
+ συστήματος &man.chroot.2; του &os; για να αλλάξει
+ τον γονικό κατάλογο (root directory) μιας διεργασίας και όλων των
+ άλλων διεργασιών που εξαρτώνται από αυτή.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>&man.chroot.2; (περιβάλλον)</term>
+ <listitem>
+ <para>Το περιβάλλον μια διεργασίας που τρέχει μέσα σε ένα
+ <quote>chroot</quote>. Αυτό περιλαμβάνει πόρους όπως το τμήμα
+ του συστήματος αρχείων που είναι ορατό, τα ID του χρήστη και της
+ ομάδας που είναι διαθέσιμα, καθώς και τις διεπαφές δικτύου
+ (network interfaces), τους μηχανισμούς IPC κλπ.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>&man.jail.8; (εντολή)</term>
+ <listitem>
+ <para>Το πρόγραμμα που σας επιτρέπει να διαχειρίζεστε το σύστημα
+ σας και να ξεκινάτε διεργασίες σε περιβάλλον jail.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>host (σύστημα (system), διεργασία (process), χρήστης (user),
+ κλπ.)</term>
+ <listitem>
+ <para>Το φυσικό σύστημα που φιλοξενεί και ελέγχει ένα περιβάλλον
+ jail. Το host system έχει πρόσβαση σε όλο το διαθέσιμο υλικό,
+ και μπορεί να ελέγξει διεργασίες τόσο μέσα όσο και έξω από το
+ περιβάλλον του jail. Μία από τις σημαντικότερες διαφορές μεταξύ
+ του host system και του jail είναι ότι οι περιορισμοί που
+ εφαρμόζονται στις διεργασίες του χρήστη root μέσα στο περιβάλλον
+ jail, δεν ισχύουν για τις διεργασίες στο host system.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>hosted (σύστημα (system), διεργασία (process), χρήστης (user),
+ κλπ.)</term>
+ <listitem>
+ <para>Μια διεργασία, ένας χρήστης ή κάποια άλλη οντότητα, του
+ οποίου η πρόσβαση στους πόρους του συστήματος περιορίζεται μέσα
+ από ένα jail.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="jails-intro">
+ <title>Εισαγωγή</title>
+
+ <para>Μια και η διαχείριση ενός συστήματος μπορεί να είναι δύσκολη και
+ περίπλοκη, αναπτύχθηκαν αρκετά εργαλεία τα οποία μπορούν να κάνουν τη
+ ζωή ενός διαχειριστή πολύ πιο εύκολη. Τα εργαλεία αυτά προσφέρουν
+ κάποιες πρόσθετες δυνατότητες όσο αφορά τον τρόπο εγκατάστασης,
+ ρύθμισης και συντήρησης ενός συστήματος. Μια από τις εργασίες που
+ αναμένεται να εκτελέσει κάθε διαχειριστής συστήματος, είναι να ρυθμίσει
+ σωστά την ασφάλεια του συστήματος, προκειμένου να προσφέρει τις
+ υπηρεσίες για τις οποίες έχει προγραμματιστεί, χωρίς να επιτρέπει
+ συμβιβασμούς στην ασφάλεια.</para>
+
+ <para>Ένα από τα εργαλεία που μπορούν να ενισχύσουν την ασφάλεια ενός
+ συστήματος &os; είναι τα <emphasis>jails</emphasis>. Τα Jails
+ πρωτοεμφανίστηκαν στο &os;&nbsp;4.X από τον &a.phk;, αλλά βελτιώθηκαν
+ πολύ περισσότερο στην έκδοση &os;&nbsp;5.X, προκειμένου να προσφέρουν
+ περισσότερες δυνατότητες και να είναι περισσότερο ευέλικτα. Η ανάπτυξή
+ τους συνεχίζεται ακόμη, με βελτιώσεις στους τομείς της ευχρηστίας, της
+ απόδοσης, της αξιοπιστίας και της ασφάλειας που πρέπει να
+ παρέχουν.</para>
+
+ <sect2 id="jails-what">
+ <title>Τι Είναι Ένα Jail</title>
+
+ <para>Τα λειτουργικά συστήματα τύπου BSD, παρείχαν το &man.chroot.2; από
+ την εποχή του 4.2BSD. Η εντολή &man.chroot.8; μπορεί να
+ χρησιμοποιηθεί για να αλλάξει τον γονικό κατάλογο μιας ομάδας
+ διεργασιών, δημιουργώντας ένα ασφαλές περιβάλλον, ξεχωριστό από το
+ υπόλοιπο σύστημα. Όσες διεργασίες δημιουργούνται σε έναν τέτοιο
+ περιβάλλον, δεν έχουν πρόσβαση σε αρχεία και πόρους έξω από αυτό.
+ Για αυτό το λόγο, αν μια υπηρεσία τρέχει μέσα σε ένα τέτοιο
+ περιβάλλον, και κάποιος εισβολέας καταφέρει να διεισδύσει σε αυτή, δε
+ θα του επιτραπεί η πρόσβαση στο υπόλοιπο σύστημα.
+ Η εντολή &man.chroot.8; είναι πολύ καλή για απλές εργασίες οι οποίες
+ δε χρειάζονται να είναι πολύ ευέλικτες ή να διαθέτουν πολύπλοκα και
+ προηγμένα χαρακτηριστικά. Ωστόσο, από την αρχή της ιδέας του chroot,
+ βρέθηκαν αρκετοί τρόποι για να μπορέσει κάποιος να ξεφύγει από το
+ περιβάλλον αυτό. Παρ' όλο που έχουν διορθωθεί πολλά σφάλματα στις
+ πρόσφατες εκδόσεις του πυρήνα του &os;, ήταν ξεκάθαρο ότι η
+ &man.chroot.2; δεν ήταν η ιδανική λύση για την ασφάλιση υπηρεσιών.
+ Έπρεπε να υλοποιηθεί ένα νέο υποσύστημα.</para>
+
+ <para>Αυτός είναι ένας από τους κύριους λόγους για την ανάπτυξη των
+ <emphasis>jails</emphasis>.</para>
+
+ <para>Τα jails βελτίωσαν με διάφορους τρόπους την ιδέα του παραδοσιακού
+ περιβάλλοντος του &man.chroot.2;. Στο τυπικό περιβάλλον του
+ &man.chroot.2;, οι διεργασίες περιορίζονται μόνος ως προς το μέρος
+ του συστήματος αρχείων όπου μπορούν να έχουν πρόσβαση. Οι υπόλοιποι
+ πόροι του συστήματος (όπως οι χρήστες, οι τρέχοντες διεργασίες, το
+ υποσύστημα δικτύωσης) είναι κοινόχρηστοι μεταξύ των διεργασιών του
+ περιβάλλοντος chroot και των διεργασιών του host system. Τα jails
+ επεκτείνουν αυτό το μοντέλο, με την εικονικοποίηση όχι μόνο της
+ πρόσβασης στο σύστημα αρχείων, αλλά επίσης των χρηστών, του
+ υποσυστήματος δικτύωσης του πυρήνα του &os; και μερικών ακόμη
+ πραγμάτων. Περισσότερα για τις διαθέσιμες εντολές που μπορούν να
+ χρησιμοποιηθούν για τη ρύθμιση και τον έλεγχο ενός περιβάλλοντος jail
+ μπορείτε να βρείτε στο <xref linkend="jails-tuning"/>.</para>
+
+ <para>Το Jail έχει τέσσερα κύρια στοιχεία:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Έναν κατάλογο με δική του δομή &mdash; το αρχικό σημείο
+ στο οποίο εισέρχεται ένα jail. Από τη στιγμή που μια διεργασία
+ βρίσκεται μέσα σε ένα jail, δεν επιτρέπεται να βγει έξω από τον
+ κατάλογο αυτό. Τα προβλήματα που ταλαιπωρούσαν τον σχεδιασμό του
+ &man.chroot.2; δεν επηρεάζουν τα jails του &os;.</para>
+ </listitem>
+
+ <listitem>
+ <para>Ένα hostname (όνομα συστήματος) &mdash; το hostname το οποίο
+ θα χρησιμοποιηθεί μέσα στο jail. Τα jails χρησιμοποιούνται
+ κυρίως για την εξυπηρέτηση δικτυακών υπηρεσιών,
+ επομένως η ύπαρξη ενός χαρακτηριστικού hostname που να
+ περιγράφει ταυτόχρονα και τη χρήση του, μπορεί να βοηθήσει αρκετά
+ τον διαχειριστή συστήματος.</para>
+ </listitem>
+
+ <listitem>
+ <para>Μια διεύθυνση <acronym>IP</acronym> &mdash; αυτή η διεύθυνση
+ αντιστοιχεί σε ένα jail και δεν μπορεί να αλλάξει κατά τη
+ διάρκεια της ζωής του. Η διεύθυνση IP ενός jail είναι συνήθως
+ μία διεύθυνση τύπου alias για μια ήδη υπάρχουσα διεπαφή δικτύου
+ (network interface), αλλά κάτι τέτοιο δεν είναι απαραίτητο.</para>
+ </listitem>
+
+ <listitem>
+ <para>Μία εντολή &mdash; η διαδρομή προς ένα εκτελέσιμο το οποίο θα
+ εκτελείται μέσα στο jail. Η διαδρομή αυτή είναι σχετική ως προς
+ τον γονικό κατάλογο του περιβάλλοντος του jail, και μπορεί να
+ διαφέρει πολύ από jail σε jail ανάλογα με το συγκεκριμένο
+ περιβάλλον.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Εκτός αυτών, τα jails μπορούν να έχουν τις δικές τους ομάδες
+ χρηστών και τον δικό τους χρήστη <username>root</username>. Φυσικά, ο
+ έλεγχος που έχει ο χρήστης <username>root</username> του jail,
+ περιορίζεται μέσα στο περιβάλλον του jail, και από την
+ οπτική γωνία του host system, ο χρήστης αυτός δεν είναι παντοδύναμος.
+ Επιπλέον, ο χρήστης <username>root</username> του jail, δεν μπορεί
+ να εκτελέσει κρίσιμες εργασίες στο σύστημα έξω από το περιβάλλον του
+ &man.jail.8;. Περισσότερες πληροφορίες σχετικά με τις δυνατότητες και
+ τους περιορισμούς του <username>root</username> θα βρείτε στο
+ <xref linkend="jails-tuning"/>.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="jails-build">
+ <title>Δημιουργώντας και Ελέγχοντας Jails</title>
+
+ <para>Μερικοί διαχειριστές συστημάτων κατηγοριοποιούν τα jails σε δύο
+ ενότητες: τα <quote>complete (πλήρη)</quote> jails, τα οποία μιμούνται
+ ένα πραγματικό σύστημα &os;, και τα <quote>service</quote> jails, τα
+ οποία χρησιμοποιούνται για μια εφαρμογή ή υπηρεσία, που πιθανόν
+ εκτελείται με ειδικά προνόμια. Αυτός είναι ένας νοητικός διαχωρισμός
+ και δεν επιδρά στη διαδικασία δημιουργίας ενός jail. Η σελίδα manual
+ του &man.jail.8; περιέχει κατατοπιστικές πληροφορίες για τη διαδικασία
+ δημιουργίας ενός jail:</para>
+
+ <screen>&prompt.root; <userinput>setenv D <replaceable>/here/is/the/jail</replaceable></userinput>
+&prompt.root; <userinput>mkdir -p $D</userinput> <co id="jailpath"/>
+&prompt.root; <userinput>cd /usr/src</userinput>
+&prompt.root; <userinput>make buildworld</userinput> <co id="jailbuildworld"/>
+&prompt.root; <userinput>make installworld DESTDIR=$D</userinput> <co id="jailinstallworld"/>
+&prompt.root; <userinput>make distribution DESTDIR=$D</userinput> <co id="jaildistrib"/>
+&prompt.root; <userinput>mount -t devfs devfs $D/dev</userinput> <co id="jaildevfs"/></screen>
+
+ <calloutlist>
+ <callout arearefs="jailpath">
+ <para>Ο καλύτερος τρόπος για να ξεκινήσετε είναι με την επιλογή μιας
+ θέσης (διαδρομής) για το jail σας. Εκεί θα βρίσκονται αποθηκευμένα
+ τα αρχεία του jail όσο αφορά το σύστημα σας. Μια καλή ιδέα είναι
+ το <filename class="directory">/usr/jail/<replaceable>jailname</replaceable></filename>,
+ όπου <replaceable>jailname</replaceable> το hostname με το οποίο θα
+ αναγνωρίζεται το jail. Το σύστημα αρχείων
+ <filename class="directory">/usr/</filename> έχει συνήθως αρκετό
+ χώρο για το σύστημα αρχείων του jail, το οποίο, για ένα
+ <quote>complete</quote> jail είναι ουσιαστικά
+ ένας κλώνος κάθε αρχείου του βασικού συστήματος μια προεπιλεγμένης
+ εγκατάστασης του &os;.</para>
+ </callout>
+
+ <callout arearefs="jailbuildworld">
+ <para>Το βήμα αυτό δεν απαιτείται αν έχετε μεταγλωττίσει στο παρελθόν
+ το βασικό σύστημα χρησιμοποιώντας την εντολή
+ <command>make world</command> ή
+ <command>make buildworld</command>. Μπορείτε απλώς να
+ εγκαταστήσετε το υπάρχον σύστημα σας στο νέο jail.</para>
+ </callout>
+
+ <callout arearefs="jailinstallworld">
+ <para>Η εντολή αυτή θα εμπλουτίσει τον κατάλογο που επιλέξατε για το
+ jail με όλα τα απαραίτητα αρχεία, βιβλιοθήκες, σελίδες βοήθειας
+ κλπ.</para>
+ </callout>
+
+ <callout arearefs="jaildistrib">
+ <para>Το <maketarget>distribution</maketarget> target του
+ <application>make</application> εγκαθιστά όλα τα αρχεία ρυθμίσεων
+ που απαιτούνται. Με απλά λόγια, εγκαθιστά κάθε αρχείο από το
+ <filename class="directory">/usr/src/etc/</filename> στον κατάλογο
+ <filename class="directory">/etc</filename> του περιβάλλοντος
+ jail: <filename class="directory">$D/etc/</filename>.</para>
+ </callout>
+
+ <callout arearefs="jaildevfs">
+ <para>Δε χρειάζεται να προσαρτήσετε το &man.devfs.8; στο περιβάλλον
+ του jail. Από την άλλη όμως, όλες, ή σχεδόν όλες οι εφαρμογές
+ χρειάζονται πρόσβαση σε τουλάχιστον μία συσκευή, αναλόγως με τον
+ σκοπό της εφαρμογής. Είναι πολύ σημαντικό να ελέγχεται η πρόσβαση
+ στις συσκευές μέσα σε ένα jail, καθώς λανθασμένες ρυθμίσεις
+ μπορεί να επιτρέψουν σε κάποιον εισβολέα να κάνει
+ <quote>άσχημα παιχνίδια</quote> μέσα στο jail.
+ Ο έλεγχος του &man.devfs.8; γίνεται μέσω ενός συνόλου κανόνων οι
+ οποίοι περιγράφονται στις σελίδες manual του &man.devfs.8; και του
+ &man.devfs.conf.5;.</para>
+ </callout>
+ </calloutlist>
+
+ <para>Από την στιγμή που έχει εγκατασταθεί ένα jail, μπορεί να εκκινηθεί
+ με τη χρήση της εντολής &man.jail.8;. Η &man.jail.8; δέχεται τέσσερις
+ υποχρεωτικές παραμέτρους οι οποίες περιγράφονται στο
+ <xref linkend="jails-what"/>. Μπορείτε να δώσετε και άλλες παραμέτρους,
+ π.χ., για να εκτελέσετε μια διεργασία στο περιβάλλον του jail με τις
+ άδειες ενός συγκεκριμένου χρήστη.
+ Η παράμετρος <option><replaceable>command</replaceable></option>
+ εξαρτάται από τον τύπο του jail. Για ένα
+ <emphasis>εικονικό σύστημα</emphasis>, το <filename>/etc/rc</filename>
+ είναι μια καλή επιλογή, μια και στην ουσία θα κλωνοποιήσει
+ την διαδικασία εκκίνησης ενός πραγματικού συστήματος &os;. Για ένα
+ <emphasis>service</emphasis> jail, η παράμετρος εξαρτάται από την
+ υπηρεσία ή την εφαρμογή που θα τρέχει μέσα στο jail.</para>
+
+ <para>Τα jails συνήθως ξεκινούν κατά την εκκίνηση και ο μηχανισμός
+ <filename>rc</filename> του &os; παρέχει έναν εύκολο τρόπο για να γίνει
+ κάτι τέτοιο.</para>
+
+ <procedure>
+ <step>
+ <para>Η λίστα με τα jails που θέλετε να ξεκινάνε κατά την εκκίνηση θα
+ πρέπει να προστεθούν στο αρχείο &man.rc.conf.5;:</para>
+
+ <programlisting>jail_enable="YES" # Set to NO to disable starting of any jails
+jail_list="<replaceable>www</replaceable>" # Space separated list of names of jails</programlisting>
+
+ <note>
+ <para>Το όνομα που έχει κάθε jail στη
+ λίστα <varname>jail_list</varname> επιτρέπεται να περιέχει μόνο
+ αλφαριθμητικούς χαρακτήρες.</para>
+ </note>
+ </step>
+
+ <step>
+ <para>Για κάθε jail που υπάρχει στο <varname>jail_list</varname>, θα
+ πρέπει να προστεθεί μια ομάδα από ρυθμίσεις στο &man.rc.conf.5;, οι
+ οποίες θα το περιγράφουν:</para>
+
+ <programlisting>jail_<replaceable>www</replaceable>_rootdir="/usr/jail/www" # jail's root directory
+jail_<replaceable>www</replaceable>_hostname="<replaceable>www</replaceable>.example.org" # jail's hostname
+jail_<replaceable>www</replaceable>_ip="192.168.0.10" # jail's IP address
+jail_<replaceable>www</replaceable>_devfs_enable="YES" # mount devfs in the jail
+jail_<replaceable>www</replaceable>_devfs_ruleset="<replaceable>www_ruleset</replaceable>" # devfs ruleset to apply to jail</programlisting>
+
+ <para>Η προεπιλεγμένη εκκίνηση του jail μέσω του
+ &man.rc.conf.5;, θα ξεκινήσει το script του jail
+ <filename>/etc/rc</filename>, το οποίο υποθέτει ότι το jail είναι
+ ένα ολοκληρωμένο εικονικό σύστημα. Για service jails, η
+ προεπιλεγμένη εκκίνηση πρέπει να αλλάξει, ορίζοντας κατάλληλα την
+ επιλογή <varname>jail_<replaceable>jailname</replaceable>_exec_start</varname>.</para>
+
+ <note>
+ <para>Για πλήρη λίστα των διαθέσιμων επιλογών, δείτε το
+ &man.rc.conf.5;.</para>
+ </note>
+ </step>
+ </procedure>
+
+ <para>Το script <filename>/etc/rc.d/jail</filename> μπορεί να
+ χρησιμοποιηθεί για να ξεκινήσει ή να σταματήσει κάποιο jail
+ χειροκίνητα. Πρέπει όμως να υπάρχει η αντίστοιχη καταχώρηση στο
+ <filename>rc.conf</filename>:</para>
+
+ <screen>&prompt.root; <userinput>/etc/rc.d/jail start <replaceable>www</replaceable></userinput>
+&prompt.root; <userinput>/etc/rc.d/jail stop <replaceable>www</replaceable></userinput></screen>
+
+ <para>Για την ώρα δεν υπάρχει κάποιος απόλυτα σωστός τρόπος για να
+ τερματίσετε κάποιο &man.jail.8;. Αυτό συμβαίνει, διότι οι εντολές
+ που χρησιμοποιούνται συνήθως για να τερματίσουν με ασφάλεια ένα
+ σύστημα, δεν μπορούν να χρησιμοποιηθούν μέσα στο περιβάλλον ενός jail.
+ Ο καλύτερος τρόπος για να τερματίσετε ένα jail είναι με την εκτέλεση
+ της ακόλουθης εντολής μέσα από το ίδιο το jail ή με χρήση του
+ βοηθητικού προγράμματος &man.jexec.8; έξω από αυτό:</para>
+
+ <screen>&prompt.root; <userinput>sh /etc/rc.shutdown</userinput></screen>
+
+ <para>Περισσότερες πληροφορίες σχετικά με αυτή τη διαδικασία μπορείτε να
+ βρείτε στη σελίδα βοηθείας του &man.jail.8;</para>
+ </sect1>
+
+ <sect1 id="jails-tuning">
+ <title>Λεπτομερής Ρύθμιση και Διαχείριση</title>
+
+ <para>Υπάρχουν αρκετές επιλογές που μπορούν να εφαρμοστούν σε ένα jail,
+ καθώς και διάφοροι τρόποι για να συνδυαστεί ένα σύστημα &os; με jails
+ προκειμένου να παράγουν εφαρμογές υψηλότερου επιπέδου. Η ενότητα αυτή
+ παρουσιάζει:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Μερικές από τις διαθέσιμες επιλογές για την ρύθμιση της
+ συμπεριφοράς και των περιορισμών ασφαλείας που υλοποιούνται από την
+ εγκατάσταση ενός jail.</para>
+ </listitem>
+
+ <listitem>
+ <para>Μερικές εφαρμογές υψηλού επιπέδου για τη διαχείριση jails,
+ οι οποίες είναι διαθέσιμες μέσω της συλλογής των Ports του &os; και
+ μπορούν να χρησιμοποιηθούν στην υλοποίηση ολοκληρωμένων λύσεων με
+ τη χρήση jails.</para>
+ </listitem>
+ </itemizedlist>
+
+ <sect2 id="jails-tuning-utilities">
+ <title>Εργαλεία Συστήματος του &os; για τη Ρύθμιση Jails</title>
+
+ <para>Λεπτομερής ρύθμιση ενός jail γίνεται κατά κύριο λόγο μέσω των
+ μεταβλητών του &man.sysctl.8;. Υπάρχει ένα ειδικό subtree του sysctl
+ το οποίο αποτελεί τη βάση για την οργάνωση όλων των σχετικών
+ επιλογών: πρόκειται για την ιεραρχία επιλογών πυρήνα
+ <varname>security.jail.*</varname>. Παρακάτω θα βρείτε μια λίστα με
+ τα κύρια sysctl που σχετίζονται με κάποιο jail καθώς και τις
+ προεπιλεγμένες τιμές τους. Τα ονόματα μάλλον εξηγούν από μόνα τους
+ την αντίστοιχη λειτουργία, αλλά για περισσότερες πληροφορίες μπορείτε
+ να δείτε τις σελίδες βοήθειας των &man.jail.8;
+ και &man.sysctl.8;.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><varname>security.jail.set_hostname_allowed: 1</varname></para>
+ </listitem>
+
+ <listitem>
+ <para><varname>security.jail.socket_unixiproute_only: 1</varname></para>
+ </listitem>
+
+ <listitem>
+ <para><varname>security.jail.sysvipc_allowed: 0</varname></para>
+ </listitem>
+
+ <listitem>
+ <para><varname>security.jail.enforce_statfs: 2</varname></para>
+ </listitem>
+
+ <listitem>
+ <para><varname>security.jail.allow_raw_sockets: 0</varname></para>
+ </listitem>
+
+ <listitem>
+ <para><varname>security.jail.chflags_allowed: 0</varname></para>
+ </listitem>
+
+ <listitem>
+ <para><varname>security.jail.jailed: 0</varname></para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Οι μεταβλητές αυτές μπορούν να χρησιμοποιηθούν από τον
+ διαχειριστή του <emphasis>host system</emphasis>
+ προκειμένου να προσθέσει ή να αφαιρέσει περιορισμούς οι οποίοι
+ υπάρχουν αρχικά στον χρήστη <username>root</username>. Υπάρχουν όμως
+ και κάποιοι περιορισμοί οι οποίοι δεν μπορούν να αφαιρεθούν.
+ Ο χρήστης <username>root</username> δεν επιτρέπεται να προσαρτά ή να
+ απο-προσαρτά συστήματα αρχείων μέσα από ένα &man.jail.8;. Ο
+ <username>root</username> μέσα σε ένα jail δεν επιτρέπεται να
+ φορτώσει ή να αποφορτώσει τους κανόνες (rulesets) του &man.devfs.8;,
+ το firewall, και διάφορες άλλες εργασίες διαχείρισης οι οποίες
+ χρειάζονται τροποποίηση των δεδομένων του πυρήνα, όπως για παράδειγμα
+ ο ορισμός του <varname>securelevel</varname> του πυρήνα.</para>
+
+ <para>Το βασικό σύστημα του &os; περιέχει τα βασικά εργαλεία για τη
+ προβολή πληροφοριών σχετικά με τα ενεργά jails, και επίσης για την
+ ανάθεση συγκεκριμένων εντολών διαχείρισης σε κάποιο jail. Οι εντολές
+ &man.jls.8; και &man.jexec.8; αποτελούν μέρος του βασικού συστήματος
+ του &os;, και μπορούν να χρησιμοποιηθούν για να τις παρακάτω απλές
+ εργασίες:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Προβολή λίστας των ενεργών jails και τον αντίστοιχων
+ χαρακτηριστικών τους - jail identifier (<acronym>JID</acronym>),
+ διεύθυνση <acronym>IP</acronym>, hostname και path.</para>
+ </listitem>
+
+ <listitem>
+ <para>Προσκόλληση σε κάποιο ενεργό jail, από το host system, και
+ εκτέλεση κάποιας εντολής μέσα στο jail ή εκτέλεση εργασιών
+ διαχείρισης μέσα στο jail. Κάτι τέτοιο είναι ιδιαίτερα χρήσιμο
+ όταν ο χρήστης <username>root</username> επιθυμεί να τερματίσει
+ με ασφάλεια κάποιο jail. Μπορεί επίσης να χρησιμοποιηθεί η εντολή
+ &man.jexec.8; για την εκτέλεση κάποιου shell μέσα στο jail
+ προκειμένου να εκτελεστούν εργασίες διαχείρισης, για
+ παράδειγμα:</para>
+
+ <screen>&prompt.root; <userinput>jexec <replaceable>1</replaceable> tcsh</userinput></screen>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2 id="jails-tuning-admintools">
+ <title>Εργαλεία Διαχείρισης Υψηλού Επιπέδου στη Συλλογή Ports
+ του &os;</title>
+
+ <para>Ανάμεσα στις διάφορες εφαρμογές τρίτων κατασκευαστών για τη
+ διαχείριση των jails, ένα από τα ποιο ολοκληρωμένα και χρήσιμα πακέτα
+ είναι το <filename role="package">sysutils/jailutils</filename>.
+ Αποτελεί ένα σύνολο μικρών εφαρμογών
+ οι οποίες συνεισφέρουν στη διαχείριση του &man.jail.8;. Για
+ περισσότερες πληροφορίες, δείτε στον δικτυακό του τόπο.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="jails-application">
+ <title>Εφαρμογή των Jails</title>
+
+ <sect2 id="jails-service-jails">
+ <sect2info>
+ <authorgroup>
+ <author>
+ <firstname>Daniel</firstname>
+ <surname>Gerzo</surname>
+ <contrib>Συνεισφορά του </contrib>
+ <!-- 15. May 2007 -->
+ </author>
+ </authorgroup>
+ </sect2info>
+
+ <title>Service Jails</title>
+
+ <para>Η ενότητα αυτή είναι βασισμένη στην ιδέα που παρουσιάστηκε αρχικά
+ από τον &a.simon; στο <ulink
+ url="http://simon.nitro.dk/service-jails.html"></ulink>, καθώς και
+ σε ένα ανανεωμένο άρθρο του Ken Tom <email>locals@gmail.com</email>.
+ Στην ενότητα αυτή θα σας δείξουμε πως να στήσετε ένα σύστημα &os; το
+ οποίο να διαθέτει ένα επιπλέον επίπεδο ασφάλειας, με τη χρήση του
+ &man.jail.8;. Υποθέτουμε ότι το σύστημα τρέχει τουλάχιστον RELENG_6_0
+ και ότι έχετε κατανοήσει όλες τις προηγούμενες πληροφορίες του
+ κεφαλαίου.</para>
+
+ <sect3 id="jails-service-jails-design">
+ <title>Σχεδιασμός</title>
+
+ <para>Ένα από τα σημαντικότερα προβλήματα με τα jails είναι η
+ διαχείριση της διαδικασίας αναβαθμίσεων. Αυτό τείνει να είναι
+ πρόβλημα διότι το κάθε jail πρέπει να δημιουργηθεί από την αρχή σε
+ κάθε αναβάθμιση. Συνήθως δεν είναι πρόβλημα αν έχετε ένα μόνο jail,
+ μια και πρόκειται για σχετικά απλή διαδικασία, αλλά γίνεται
+ κουραστική και χρονοβόρα αν έχετε πολλά jails.</para>
+
+ <warning>
+ <para>Οι παρακάτω ρυθμίσεις προϋποθέτουν εμπειρία με το &os; και τη
+ χρήση των διάφορων χαρακτηριστικών του. Εάν τα παρακάτω βήματα
+ σας φαίνονται πολύ περίπλοκα, είναι καλύτερα να ρίξετε μια ματιά
+ σε κάτι ποιο απλό όπως το
+ <filename role="package">sysutils/ezjail</filename>, το οποίο
+ παρέχει έναν ευκολότερο τρόπο διαχείρισης των jails του &os; και
+ δεν είναι τόσο εξειδικευμένο όσο οι παρακάτω ρυθμίσεις.</para>
+ </warning>
+
+ <para>Η ιδέα αυτή έχει παρουσιαστεί για να λύσει τέτοιου είδους
+ προβλήματα, με την βοήθεια της κοινής χρήσης όσο το δυνατόν
+ περισσότερων αρχείων μεταξύ των jails, με έναν ασφαλή
+ όμως τρόπο &mdash; χρησιμοποιώντας προσαρτήσεις τύπου
+ &man.mount.nullfs.8; και μόνο για ανάγνωση (read only)
+ έτσι ώστε η αναβάθμιση να είναι ευκολότερη, και η χρήση μεμονωμένων
+ jails για κάθε υπηρεσία να καθίσταται επιθυμητή. Επιπλέον, παρέχει
+ έναν απλό τρόπο για να προσθέσετε και να αφαιρέσετε jails όπως
+ επίσης και να τα αναβαθμίσετε.</para>
+
+ <note>
+ <para>Παραδείγματα υπηρεσιών τέτοιου τύπου: ένας
+ <acronym>HTTP</acronym> server, ένας <acronym>DNS</acronym>
+ server, ένας <acronym>SMTP</acronym> server, κλπ.</para>
+ </note>
+
+ <para>Οι στόχοι των παρακάτω ρυθμίσεων είναι:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Δημιουργία απλών και κατανοητών jails.
+ Αυτό σημαίνει ότι <emphasis>δεν</emphasis> θα τρέξουμε ένα
+ πλήρες installworld σε κάθε jail.</para>
+ </listitem>
+
+ <listitem>
+ <para>Εύκολη προσθήκη και διαγραφή jails.</para>
+ </listitem>
+
+ <listitem>
+ <para>Εύκολη αναβάθμιση υπαρχόντων jails.</para>
+ </listitem>
+
+ <listitem>
+ <para>Δυνατότητα δημιουργίας προσαρμοσμένου τμήματος
+ του &os;.</para>
+ </listitem>
+
+ <listitem>
+ <para>Όσο περισσότερη ασφάλεια είναι δυνατόν, με ελαχιστοποίηση
+ της πιθανότητας κακόβουλης χρήσης.</para>
+ </listitem>
+
+ <listitem>
+ <para>Εξοικονόμηση χώρου και inodes.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Όπως έχουμε ήδη πει, ο σχεδιασμός αυτός εξαρτάται ιδιαίτερα από
+ την ύπαρξη ενός αρχικού template στο οποίο δεν επιτρέπεται η
+ εγγραφή δεδομένων (γνωστό ως <application>nullfs</application>) και
+ το οποίο πρέπει να έχει προσαρτηθεί σε κάθε jail, όπως επίσης και
+ στην ύπαρξη για κάθε jail μιας συσκευής που να επιτρέπει τόσο την
+ ανάγνωση όσο και την εγγραφή. Μια τέτοια συσκευή μπορεί να είναι
+ κάποιος ξεχωριστός φυσικός δίσκος, μια κατάτμηση, ή κάποια συσκευή
+ vnode &man.md.4;. Στο παρακάτω παράδειγμα, θα χρησιμοποιήσουμε
+ προσαρτήσεις τύπου <application>nullfs</application> στις οποίες
+ θα επιτρέπεται εγγραφή και ανάγνωση.</para>
+
+ <para>Η δομή του συστήματος αρχείων περιγράφεται στην παρακάτω
+ λίστα:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Κάθε jail θα προσαρτάται κάτω από τον κατάλογο <filename
+ class="directory">/home/j</filename>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Το <filename class="directory">/home/j/mroot</filename>
+ είναι το template για το κάθε jail και η κατάτμηση μόνο
+ ανάγνωσης για όλα τα jails.</para>
+ </listitem>
+
+ <listitem>
+ <para>Θα δημιουργηθεί ένας κενός κατάλογος για κάθε jail κάτω
+ από τον κατάλογο
+ <filename class="directory">/home/j</filename>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Κάθε jail θα έχει έναν κατάλογο
+ <filename class="directory">/s</filename>, ο οποίος θα είναι
+ σύνδεσμος προς το εγγράψιμο μέρος του συστήματος.</para>
+ </listitem>
+
+ <listitem>
+ <para>Κάθε jail θα έχει το δικό εγγράψιμο μέρος το οποίο
+ θα βασίζεται στο
+ <filename class="directory">/home/j/skel</filename>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Κάθε jailspace (το εγγράψιμο μέρος κάθε jail) θα πρέπει
+ να δημιουργηθεί στον κατάλογο
+ <filename class="directory">/home/js</filename>.</para>
+ </listitem>
+ </itemizedlist>
+
+ <note>
+ <para>Όλα αυτά προϋποθέτουν ότι τα jails βρίσκονται κάτω από τον
+ κατάλογο <filename class="directory">/home</filename>. Αυτό
+ βέβαια μπορεί να αλλάξει σε οτιδήποτε εσείς θέλετε, αλλά θα
+ επηρεάσει όλα τα παρακάτω παραδείγματα.</para>
+ </note>
+ <!-- Insert an image or drawing here to illustrate the example. -->
+ </sect3>
+
+ <sect3 id="jails-service-jails-template">
+ <title>Δημιουργώντας το Template</title>
+
+ <para>Η ενότητα αυτή θα περιγράψει τα βήματα που χρειάζονται
+ προκειμένου να δημιουργήσετε το πρωταρχικό template το οποίο θα
+ περιέχει το τμήμα των jails που είναι μόνο για ανάγνωση.</para>
+
+ <para>Είναι πάντοτε καλή ιδέα να αναβαθμίζετε το &os; στη τελευταία
+ έκδοση -RELEASE. Για το σκοπό αυτό, διαβάστε το αντίστοιχο
+ <ulink url="&url.books.handbook;/makeworld.html">κεφάλαιο</ulink>
+ στο Εγχειρίδιο. Στη περίπτωση που η αναβάθμιση
+ δεν είναι εφικτή, θα χρειαστείτε buildworld για να μπορέσετε να
+ συνεχίσετε. Επιπλέον θα χρειαστείτε το πακέτο
+ <filename role="package">sysutils/cpdup</filename>. Θα
+ χρησιμοποιήσουμε το βοηθητικό πρόγραμμα &man.portsnap.8; για να
+ κατεβάσουμε τη συλλογή των Ports. Για τους νεο-εισερχόμενους,
+ συνίσταται η ανάγνωση του <ulink
+ url="&url.books.handbook;/portsnap.html">κεφαλαίου για το
+ Portsnap</ulink> στο Εγχειρίδιο του &os;.</para>
+
+ <procedure>
+ <step>
+ <para>Αρχικά, δημιουργήστε μια δομή καταλόγων για το σύστημα
+ αρχείων το οποίο θα είναι μόνο για ανάγνωση, και το οποίο θα
+ περιέχει τα εκτελέσιμα (binaries) του &os; για τα jails.
+ Στη συνέχεια πηγαίνετε στον κατάλογο όπου βρίσκονται τα αρχεία
+ πηγαίου κώδικα (source tree) του &os; και
+ εγκαταστήστε τα αντίστοιχα αρχεία στο jail template:</para>
+
+ <screen>&prompt.root; <userinput>mkdir /home/j /home/j/mroot</userinput>
+&prompt.root; <userinput>cd /usr/src</userinput>
+&prompt.root; <userinput>make installworld DESTDIR=/home/j/mroot</userinput></screen>
+ </step>
+
+ <step>
+ <para>Επόμενο βήμα είναι να προετοιμάσετε τη συλλογή των Ports
+ του &os; για τα jails όπως επίσης και ένα &os; source tree, το
+ οποίο θα χρειαστεί για το
+ <application>mergemaster</application>:</para>
+
+ <screen>&prompt.root; <userinput>cd /home/j/mroot</userinput>
+&prompt.root; <userinput>mkdir usr/ports</userinput>
+&prompt.root; <userinput>portsnap -p /home/j/mroot/usr/ports fetch extract</userinput>
+&prompt.root; <userinput>cpdup /usr/src /home/j/mroot/usr/src</userinput></screen>
+ </step>
+
+ <step>
+ <para>Δημιουργήστε το σκελετό για το τμήμα του συστήματος όπου
+ προορίζεται για ανάγνωση και εγγραφή:</para>
+
+ <screen>&prompt.root; <userinput>mkdir /home/j/skel /home/j/skel/home /home/j/skel/usr-X11R6 /home/j/skel/distfiles</userinput>
+&prompt.root; <userinput>mv etc /home/j/skel</userinput>
+&prompt.root; <userinput>mv usr/local /home/j/skel/usr-local</userinput>
+&prompt.root; <userinput>mv tmp /home/j/skel</userinput>
+&prompt.root; <userinput>mv var /home/j/skel</userinput>
+&prompt.root; <userinput>mv root /home/j/skel</userinput></screen>
+ </step>
+
+ <step>
+ <para>Χρησιμοποιήστε το <application>mergemaster</application>
+ για να εγκαταστήσετε τα αρχεία ρυθμίσεων που λείπουν. Στη
+ συνέχεια διαγράψτε όλους τους έξτρα καταλόγους
+ που δημιουργεί το <application>mergemaster</application>:</para>
+
+ <screen>&prompt.root; <userinput>mergemaster -t /home/j/skel/var/tmp/temproot -D /home/j/skel -i</userinput>
+&prompt.root; <userinput>cd /home/j/skel</userinput>
+&prompt.root; <userinput>rm -R bin boot lib libexec mnt proc rescue sbin sys usr dev</userinput></screen>
+ </step>
+
+ <step>
+ <para>Τώρα, δημιουργήστε συνδέσμους από το σύστημα αρχείων στο
+ οποίο επιτρέπεται η εγγραφή, προς το σύστημα αρχείων που είναι
+ μόνο για ανάγνωση. Βεβαιωθείτε ότι οι σύνδεσμοι έχουν
+ δημιουργηθεί στις σωστές θέσεις <filename
+ class="directory">s/</filename>. Η ύπαρξη πραγματικών
+ καταλόγων ή η δημιουργία καταλόγων σε λάθος θέσεις θα οδηγήσουν
+ την εγκατάσταση σε αποτυχία.</para>
+
+ <screen>&prompt.root; <userinput>cd /home/j/mroot</userinput>
+&prompt.root; <userinput>mkdir s</userinput>
+&prompt.root; <userinput>ln -s s/etc etc</userinput>
+&prompt.root; <userinput>ln -s s/home home</userinput>
+&prompt.root; <userinput>ln -s s/root root</userinput>
+&prompt.root; <userinput>ln -s ../s/usr-local usr/local</userinput>
+&prompt.root; <userinput>ln -s ../s/usr-X11R6 usr/X11R6</userinput>
+&prompt.root; <userinput>ln -s ../../s/distfiles usr/ports/distfiles</userinput>
+&prompt.root; <userinput>ln -s s/tmp tmp</userinput>
+&prompt.root; <userinput>ln -s s/var var</userinput></screen>
+ </step>
+
+ <step>
+ <para>Σαν τελευταίο βήμα, δημιουργήστε ένα γενικό αρχείο
+ <filename>/home/j/skel/etc/make.conf</filename> με τα παρακάτω
+ δεδομένα:</para>
+
+ <programlisting>WRKDIRPREFIX?= /s/portbuild</programlisting>
+
+ <para>Έχοντας ορίσει το <literal>WRKDIRPREFIX</literal> με
+ αυτόν τον τρόπο, θα μπορείτε να μεταγλωττίσετε ports του &os;
+ μέσα σε κάθε jail. Θυμηθείτε ότι ο κατάλογος των ports είναι
+ μέρος του συστήματος αρχείων που έχει προσαρτηθεί μόνο για
+ ανάγνωση. Η προσαρμοσμένη διαδρομή για το
+ <literal>WRKDIRPREFIX</literal> επιτρέπει την μεταγλώττιση
+ των ports στο εγγράψιμο μέρος του κάθε jail.</para>
+ </step>
+ </procedure>
+ </sect3>
+
+ <sect3 id="jails-service-jails-creating">
+ <title>Δημιουργώντας Jails</title>
+
+ <para>Τώρα που έχουμε ένα ολοκληρωμένο &os; jail template, μπορούμε να
+ εγκαταστήσουμε και να ρυθμίσουμε τα jails στο
+ <filename>/etc/rc.conf</filename>. Το παράδειγμα αυτό δείχνει
+ τη δημιουργία τριών jails: <quote>NS</quote>,
+ <quote>MAIL</quote> και <quote>WWW</quote>.</para>
+
+ <procedure>
+ <step>
+ <para>Εισάγετε τις παρακάτω γραμμές στο αρχείο
+ <filename>/etc/fstab</filename>, ώστε το μόνο για ανάγνωση
+ template για τα jails και ο εγγράψιμος χώρος
+ να είναι διαθέσιμα στα αντίστοιχα jails:</para>
+
+ <programlisting>/home/j/mroot /home/j/ns nullfs ro 0 0
+/home/j/mroot /home/j/mail nullfs ro 0 0
+/home/j/mroot /home/j/www nullfs ro 0 0
+/home/js/ns /home/j/ns/s nullfs rw 0 0
+/home/js/mail /home/j/mail/s nullfs rw 0 0
+/home/js/www /home/j/www/s nullfs rw 0 0</programlisting>
+
+ <note>
+ <para>Οι κατατμήσεις που είναι σημειωμένες με 0 pass number δεν
+ ελέγχονται κατά την εκκίνηση από το &man.fsck.8;, ενώ για τις
+ κατατμήσεις με 0 dump number, η &man.dump.8; δεν θα
+ δημιουργεί αντίγραφα ασφαλείας. Προφανώς, δεν θέλουμε το
+ <application>fsck</application> να ελέγχει τις προσαρτήσεις
+ τύπου <application>nullfs</application>, ούτε και το
+ <application>dump</application> να κρατά αντίγραφα από τα
+ μόνο για ανάγνωση nullfs συστήματα αρχείων των jails. Αυτός
+ είναι και ο λόγος που βάλαμε <quote>0&nbsp;0</quote> στις δύο
+ τελευταίες στήλες κάθε εγγραφής του
+ <filename>fstab</filename>.</para>
+ </note>
+ </step>
+
+ <step>
+ <para>Ρυθμίστε τα jails στο
+ <filename>/etc/rc.conf</filename>:</para>
+
+ <programlisting>jail_enable="YES"
+jail_set_hostname_allow="NO"
+jail_list="ns mail www"
+jail_ns_hostname="ns.example.org"
+jail_ns_ip="192.168.3.17"
+jail_ns_rootdir="/home/j/ns"
+jail_ns_devfs_enable="YES"
+jail_mail_hostname="mail.example.org"
+jail_mail_ip="192.168.3.18"
+jail_mail_rootdir="/home/j/mail"
+jail_mail_devfs_enable="YES"
+jail_www_hostname="www.example.org"
+jail_www_ip="62.123.43.14"
+jail_www_rootdir="/home/j/www"
+jail_www_devfs_enable="YES"</programlisting>
+ <warning>
+ <para>Ο λόγος για τον οποίο θέτουμε τη μεταβλητή
+ <varname>jail_<replaceable>name</replaceable>_rootdir</varname>
+ να δείχνει στο
+ <filename class="directory">/usr/home</filename>
+ αντί για το <filename class="directory">/home</filename>
+ είναι ότι η φυσική διαδρομή για τον κατάλογο
+ <filename class="directory">/home </filename> σε μια τυπική
+ εγκατάσταση του &os; είναι το
+ <filename class="directory">/usr/home</filename>. Η μεταβλητή
+ <varname>jail_<replaceable>name</replaceable>_rootdir</varname>
+ <emphasis>δεν</emphasis> δεν πρέπει να δείχνει προς διαδρομή
+ που περιλαμβάνει συμβολικό δεσμό, διαφορετικά τα jails θα
+ αρνηθούν να ξεκινήσουν. Χρησιμοποιήστε το βοηθητικό πρόγραμμα
+ &man.realpath.1; για να προσδιορίσετε την τιμή που θα πρέπει
+ να λάβει αυτή η μεταβλητή. Δείτε το &os;-SA-07:01.jail
+ Security Advisory για περισσότερες πληροφορίες.</para>
+ </warning>
+ </step>
+
+ <step>
+ <para>Δημιουργήστε τα απαραίτητα σημεία προσαρτήσεων για το
+ σύστημα αρχείων μόνο ανάγνωσης του κάθε jail:</para>
+
+ <screen>&prompt.root; <userinput>mkdir /home/j/ns /home/j/mail /home/j/www</userinput></screen>
+ </step>
+
+ <step>
+ <para>Εγκαταστήστε το εγγράψιμο template μέσα στο κάθε jail.
+ Προσέξτε εδώ τη χρήση του
+ <filename role="package">sysutils/cpdup</filename>, το οποίο
+ επιβεβαιώνει ότι δημιουργείται το σωστό αντίγραφο του κάθε
+ καταλόγου:</para>
+ <!-- keramida: Why is cpdup required here? Doesn't cpio(1)
+ already include adequate functionality for performing this
+ job *and* have the advantage of being part of the base
+ system of FreeBSD? -->
+
+ <screen>&prompt.root; <userinput>mkdir /home/js</userinput>
+&prompt.root; <userinput>cpdup /home/j/skel /home/js/ns</userinput>
+&prompt.root; <userinput>cpdup /home/j/skel /home/js/mail</userinput>
+&prompt.root; <userinput>cpdup /home/j/skel /home/js/www</userinput></screen>
+ </step>
+
+ <step>
+ <para>Σε αυτή τη φάση, τα jails έχουν δημιουργηθεί και είναι
+ έτοιμα να ξεκινήσουν. Προσαρτήστε το σωστό σύστημα αρχείων
+ για το κάθε jail, και στη συνέχεια εκκινήστε τα,
+ χρησιμοποιώντας το script
+ <filename>/etc/rc.d/jail</filename>:</para>
+
+ <screen>&prompt.root; <userinput>mount -a</userinput>
+&prompt.root; <userinput>/etc/rc.d/jail start</userinput></screen>
+ </step>
+ </procedure>
+
+ <para>Τα jails θα πρέπει τώρα να εκτελούνται κανονικά. Γα να ελέγξετε
+ αν έχουν ξεκινήσει σωστά, χρησιμοποιείστε την εντολή &man.jls.8;.
+ Θα πρέπει να δείτε κάτι αντίστοιχο με το παρακάτω:</para>
+
+ <screen>&prompt.root; <userinput>jls</userinput>
+ JID IP Address Hostname Path
+ 3 192.168.3.17 ns.example.org /home/j/ns
+ 2 192.168.3.18 mail.example.org /home/j/mail
+ 1 62.123.43.14 www.example.org /home/j/www</screen>
+
+ <para>Σε αυτό το σημείο, θα πρέπει να μπορείτε να συνδεθείτε σε κάθε
+ jail, να προσθέσετε νέους χρήστες ή να ρυθμίσετε υπηρεσίες. Η στήλη
+ <literal>JID</literal> δηλώνει το χαρακτηριστικό αναγνωριστικό
+ αριθμό κάθε ενεργού jail. Χρησιμοποιήστε την παρακάτω εντολή
+ προκειμένου να εκτελέσετε εργασίες διαχείρισης του jail, με
+ <literal>JID</literal> 3:</para>
+
+ <screen>&prompt.root; <userinput>jexec 3 tcsh</userinput></screen>
+ </sect3>
+
+ <sect3 id="jails-service-jails-upgrading">
+ <title>Αναβάθμιση</title>
+
+ <para>Κάποια στιγμή, θα χρειαστεί να αναβαθμίσετε το σύστημά σας σε
+ μια νέα έκδοση του &os;, είτε για λόγους ασφάλειας, είτε γιατί
+ υπάρχουν νέες δυνατότητες στην νεώτερη έκδοση οι οποίες είναι
+ χρήσιμες για τα jails που ήδη έχετε. Ο τρόπος που χρησιμοποιήσαμε
+ για την δημιουργία των jails, επιτρέπει την εύκολη αναβάθμιση τους.
+ Επιπλέον, ελαχιστοποιεί το χρόνο διακοπής της λειτουργίας τους, μια
+ και θα χρειαστεί να τα σταματήσετε μόνο κατά τα λίγα τελευταία
+ λεπτά. Επίσης, παρέχει έναν τρόπο να επιστρέψετε σε παλαιότερες
+ εκδόσεις εάν προκύψουν οποιαδήποτε σφάλματα.</para>
+
+ <procedure>
+ <step>
+ <para>Το πρώτο βήμα είναι να αναβαθμίσετε το σύστημα στο οποίο
+ φιλοξενούνται τα jails, με το συνήθη τρόπο. Στη συνέχεια
+ δημιουργήστε ένα νέο προσωρινό template κατάλογο, μόνο για
+ ανάγνωση, στο
+ <filename class="directory">/home/j/mroot2</filename>.</para>
+
+ <screen>&prompt.root; <userinput>mkdir /home/j/mroot2</userinput>
+&prompt.root; <userinput>cd /usr/src</userinput>
+&prompt.root; <userinput>make installworld DESTDIR=/home/j/mroot2</userinput>
+&prompt.root; <userinput>cd /home/j/mroot2</userinput>
+&prompt.root; <userinput>cpdup /usr/src usr/src</userinput>
+&prompt.root; <userinput>mkdir s</userinput></screen>
+
+ <para>Το <maketarget>installworld</maketarget> δημιουργεί
+ μερικούς καταλόγους που δε χρειάζονται, και θα πρέπει
+ να διαγραφούν:</para>
+
+ <screen>&prompt.root; <userinput>chflags -R 0 var</userinput>
+&prompt.root; <userinput>rm -R etc var root usr/local tmp</userinput></screen>
+ </step>
+
+ <step>
+ <para>Δημιουργήστε ξανά τους συνδέσμους για το σύστημα αρχείων
+ ανάγνωσης - εγγραφής:</para>
+
+ <screen>&prompt.root; <userinput>ln -s s/etc etc</userinput>
+&prompt.root; <userinput>ln -s s/root root</userinput>
+&prompt.root; <userinput>ln -s s/home home</userinput>
+&prompt.root; <userinput>ln -s ../s/usr-local usr/local</userinput>
+&prompt.root; <userinput>ln -s ../s/usr-X11R6 usr/X11R6</userinput>
+&prompt.root; <userinput>ln -s s/tmp tmp</userinput>
+&prompt.root; <userinput>ln -s s/var var</userinput></screen>
+ </step>
+
+ <step>
+ <para>Τώρα είναι η σωστή στιγμή για να σταματήσετε τα
+ jails:</para>
+
+ <screen>&prompt.root; <userinput>/etc/rc.d/jail stop</userinput></screen>
+ </step>
+
+ <step>
+ <para>Αποπροσαρτήστε τα αρχικά συστήματα αρχείων:</para>
+ <!-- keramida: Shouldn't we suggest a short script-based
+ loop here, instead of tediously copying the same commands
+ multiple times? -->
+
+ <screen>&prompt.root; <userinput>umount /home/j/ns/s</userinput>
+&prompt.root; <userinput>umount /home/j/ns</userinput>
+&prompt.root; <userinput>umount /home/j/mail/s</userinput>
+&prompt.root; <userinput>umount /home/j/mail</userinput>
+&prompt.root; <userinput>umount /home/j/www/s</userinput>
+&prompt.root; <userinput>umount /home/j/www</userinput></screen>
+
+ <note>
+ <para>Τα συστήματα αρχείων ανάγνωσης - εγγραφής είναι
+ προσαρτημένα στο σύστημα αρχείων μόνο ανάγνωσης
+ (<filename class="directory">/s</filename>) και πρέπει να
+ είναι τα πρώτα που θα αποπροσαρτηθούν.</para>
+ </note>
+ </step>
+
+ <step>
+ <para>Μετακινήστε τον παλιό μόνο για ανάγνωση κατάλογο, και
+ αντικαταστήστε τον με τον καινούργιο. Ο παλιός θα παραμείνει ως
+ αντίγραφο ασφαλείας του παλιού συστήματος σε περίπτωση
+ προβλήματος. Ο τρόπος ονομασίας που ακολουθήσαμε εδώ
+ αντιστοιχεί στη χρονική στιγμή δημιουργίας του νέου συστήματος
+ αρχείων μόνο ανάγνωσης. Μετακινήστε την αρχική συλλογή των
+ Ports του &os; στο νέο σύστημα, αρχείων προκειμένου να
+ εξοικονομήσετε χώρο και inodes:</para>
+
+ <screen>&prompt.root; <userinput>cd /home/j</userinput>
+&prompt.root; <userinput>mv mroot mroot.20060601</userinput>
+&prompt.root; <userinput>mv mroot2 mroot</userinput>
+&prompt.root; <userinput>mv mroot.20060601/usr/ports mroot/usr</userinput></screen>
+ </step>
+
+ <step>
+ <para>Σε αυτό το σημείο το μόνο για ανάγνωση template είναι
+ έτοιμο, οπότε το μόνο που απομένει είναι να προσαρτήσετε ξανά
+ τα συστήματα αρχείων και να ξεκινήσετε τα jails:</para>
+
+ <screen>&prompt.root; <userinput>mount -a</userinput>
+&prompt.root; <userinput>/etc/rc.d/jail start</userinput></screen>
+ </step>
+ </procedure>
+
+ <para>Χρησιμοποιείτε την εντολή &man.jls.8; για να ελέγξετε εάν τα
+ jails ξεκίνησαν σωστά. Μην ξεχάσετε να εκτελέσετε το mergemaster
+ για το κάθε jail. Θα χρειαστεί να αναβαθμίσετε τόσο τα αρχεία
+ ρυθμίσεων, όσο και τα rc.d scripts.</para>
+ </sect3>
+ </sect2>
+ </sect1>
+</chapter>