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.xml1018
1 files changed, 0 insertions, 1018 deletions
diff --git a/el_GR.ISO8859-7/books/handbook/jails/chapter.xml b/el_GR.ISO8859-7/books/handbook/jails/chapter.xml
deleted file mode 100644
index 91ca1a21de..0000000000
--- a/el_GR.ISO8859-7/books/handbook/jails/chapter.xml
+++ /dev/null
@@ -1,1018 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-7"?>
-<!--
-
- Το Εγχειρίδιο του FreeBSD: Jails
-
- The FreeBSD Greek Documentation Project
-
- $FreeBSD$
-
- %SOURCE% en_US.ISO8859-1/books/handbook/jails/chapter.xml
- %SRCID% 38826
-
--->
-<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="jails">
- <info><title>Jails</title>
- <authorgroup>
- <author><personname><firstname>Matteo</firstname><surname>Riondato</surname></personname><contrib>Συνεισφορά από τον </contrib></author>
- </authorgroup>
- </info>
-
-
-
- <indexterm><primary>jails</primary></indexterm>
-
- <sect1 xml: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 xml: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 xml: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 xml: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 μπορούν να έχουν τις δικές τους ομάδες
- χρηστών και τον δικό τους χρήστη <systemitem class="username">root</systemitem>. Φυσικά, ο
- έλεγχος που έχει ο χρήστης <systemitem class="username">root</systemitem> του jail,
- περιορίζεται μέσα στο περιβάλλον του jail, και από την
- οπτική γωνία του host system, ο χρήστης αυτός δεν είναι παντοδύναμος.
- Επιπλέον, ο χρήστης <systemitem class="username">root</systemitem> του jail, δεν μπορεί
- να εκτελέσει κρίσιμες εργασίες στο σύστημα έξω από το περιβάλλον του
- &man.jail.8;. Περισσότερες πληροφορίες σχετικά με τις δυνατότητες και
- τους περιορισμούς του <systemitem class="username">root</systemitem> θα βρείτε στο
- <xref linkend="jails-tuning"/>.</para>
- </sect2>
- </sect1>
-
- <sect1 xml: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 /here/is/the/jail</userinput>
-&prompt.root; <userinput>mkdir -p $D</userinput> <co xml:id="jailpath"/>
-&prompt.root; <userinput>cd /usr/src</userinput>
-&prompt.root; <userinput>make buildworld</userinput> <co xml:id="jailbuildworld"/>
-&prompt.root; <userinput>make installworld DESTDIR=$D</userinput> <co xml:id="jailinstallworld"/>
-&prompt.root; <userinput>make distribution DESTDIR=$D</userinput> <co xml:id="jaildistrib"/>
-&prompt.root; <userinput>mount -t devfs devfs $D/dev</userinput> <co xml:id="jaildevfs"/></screen>
-
- <calloutlist>
- <callout arearefs="jailpath">
- <para>Ο καλύτερος τρόπος για να ξεκινήσετε είναι με την επιλογή μιας
- θέσης (διαδρομής) για το jail σας. Εκεί θα βρίσκονται αποθηκευμένα
- τα αρχεία του jail όσο αφορά το σύστημα σας. Μια καλή ιδέα είναι
- το <filename>/usr/jail/jailname</filename>,
- όπου <replaceable>jailname</replaceable> το hostname με το οποίο θα
- αναγνωρίζεται το jail. Το σύστημα αρχείων
- <filename>/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>Το <buildtarget>distribution</buildtarget> target του
- <application>make</application> εγκαθιστά όλα τα αρχεία ρυθμίσεων
- που απαιτούνται. Με απλά λόγια, εγκαθιστά κάθε αρχείο από το
- <filename>/usr/src/etc/</filename> στον κατάλογο
- <filename>/etc</filename> του περιβάλλοντος
- jail: <filename>$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 www</userinput>
-&prompt.root; <userinput>/etc/rc.d/jail stop www</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 xml: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 xml: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>
- προκειμένου να προσθέσει ή να αφαιρέσει περιορισμούς οι οποίοι
- υπάρχουν αρχικά στον χρήστη <systemitem class="username">root</systemitem>. Υπάρχουν όμως
- και κάποιοι περιορισμοί οι οποίοι δεν μπορούν να αφαιρεθούν.
- Ο χρήστης <systemitem class="username">root</systemitem> δεν επιτρέπεται να προσαρτά ή να
- απο-προσαρτά συστήματα αρχείων μέσα από ένα &man.jail.8;. Ο
- <systemitem class="username">root</systemitem> μέσα σε ένα 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. Κάτι τέτοιο είναι ιδιαίτερα χρήσιμο
- όταν ο χρήστης <systemitem class="username">root</systemitem> επιθυμεί να τερματίσει
- με ασφάλεια κάποιο jail. Μπορεί επίσης να χρησιμοποιηθεί η εντολή
- &man.jexec.8; για την εκτέλεση κάποιου shell μέσα στο jail
- προκειμένου να εκτελεστούν εργασίες διαχείρισης, για
- παράδειγμα:</para>
-
- <screen>&prompt.root; <userinput>jexec 1 tcsh</userinput></screen>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2 xml:id="jails-tuning-admintools">
- <title>Εργαλεία Διαχείρισης Υψηλού Επιπέδου στη Συλλογή Ports
- του &os;</title>
-
- <para>Ανάμεσα στις διάφορες εφαρμογές τρίτων κατασκευαστών για τη
- διαχείριση των jails, ένα από τα ποιο ολοκληρωμένα και χρήσιμα πακέτα
- είναι το <package>sysutils/jailutils</package>.
- Αποτελεί ένα σύνολο μικρών εφαρμογών
- οι οποίες συνεισφέρουν στη διαχείριση του &man.jail.8;. Για
- περισσότερες πληροφορίες, δείτε στον δικτυακό του τόπο.</para>
- </sect2>
- </sect1>
-
- <sect1 xml:id="jails-application">
- <title>Εφαρμογή των Jails</title>
-
- <sect2 xml:id="jails-service-jails">
- <info><title>Service Jails</title>
- <authorgroup>
- <author><personname><firstname>Daniel</firstname><surname>Gerzo</surname></personname><contrib>Συνεισφορά του </contrib></author>
- </authorgroup>
- </info>
-
-
-
- <para>Η ενότητα αυτή είναι βασισμένη στην ιδέα που παρουσιάστηκε αρχικά
- από τον &a.simon; στο <uri xlink:href="http://simon.nitro.dk/service-jails.html">http://simon.nitro.dk/service-jails.html</uri>, καθώς και
- σε ένα ανανεωμένο άρθρο του Ken Tom <email>locals@gmail.com</email>.
- Στην ενότητα αυτή θα σας δείξουμε πως να στήσετε ένα σύστημα &os; το
- οποίο να διαθέτει ένα επιπλέον επίπεδο ασφάλειας, με τη χρήση του
- &man.jail.8;. Υποθέτουμε ότι το σύστημα τρέχει τουλάχιστον RELENG_6_0
- και ότι έχετε κατανοήσει όλες τις προηγούμενες πληροφορίες του
- κεφαλαίου.</para>
-
- <sect3 xml:id="jails-service-jails-design">
- <title>Σχεδιασμός</title>
-
- <para>Ένα από τα σημαντικότερα προβλήματα με τα jails είναι η
- διαχείριση της διαδικασίας αναβαθμίσεων. Αυτό τείνει να είναι
- πρόβλημα διότι το κάθε jail πρέπει να δημιουργηθεί από την αρχή σε
- κάθε αναβάθμιση. Συνήθως δεν είναι πρόβλημα αν έχετε ένα μόνο jail,
- μια και πρόκειται για σχετικά απλή διαδικασία, αλλά γίνεται
- κουραστική και χρονοβόρα αν έχετε πολλά jails.</para>
-
- <warning>
- <para>Οι παρακάτω ρυθμίσεις προϋποθέτουν εμπειρία με το &os; και τη
- χρήση των διάφορων χαρακτηριστικών του. Εάν τα παρακάτω βήματα
- σας φαίνονται πολύ περίπλοκα, είναι καλύτερα να ρίξετε μια ματιά
- σε κάτι ποιο απλό όπως το
- <package>sysutils/ezjail</package>, το οποίο
- παρέχει έναν ευκολότερο τρόπο διαχείρισης των 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>/home/j</filename>.</para>
- </listitem>
-
- <listitem>
- <para>Το <filename>/home/j/mroot</filename>
- είναι το template για το κάθε jail και η κατάτμηση μόνο
- ανάγνωσης για όλα τα jails.</para>
- </listitem>
-
- <listitem>
- <para>Θα δημιουργηθεί ένας κενός κατάλογος για κάθε jail κάτω
- από τον κατάλογο
- <filename>/home/j</filename>.</para>
- </listitem>
-
- <listitem>
- <para>Κάθε jail θα έχει έναν κατάλογο
- <filename>/s</filename>, ο οποίος θα είναι
- σύνδεσμος προς το εγγράψιμο μέρος του συστήματος.</para>
- </listitem>
-
- <listitem>
- <para>Κάθε jail θα έχει το δικό εγγράψιμο μέρος το οποίο
- θα βασίζεται στο
- <filename>/home/j/skel</filename>.</para>
- </listitem>
-
- <listitem>
- <para>Κάθε jailspace (το εγγράψιμο μέρος κάθε jail) θα πρέπει
- να δημιουργηθεί στον κατάλογο
- <filename>/home/js</filename>.</para>
- </listitem>
- </itemizedlist>
-
- <note>
- <para>Όλα αυτά προϋποθέτουν ότι τα jails βρίσκονται κάτω από τον
- κατάλογο <filename>/home</filename>. Αυτό
- βέβαια μπορεί να αλλάξει σε οτιδήποτε εσείς θέλετε, αλλά θα
- επηρεάσει όλα τα παρακάτω παραδείγματα.</para>
- </note>
- <!-- Insert an image or drawing here to illustrate the example. -->
- </sect3>
-
- <sect3 xml:id="jails-service-jails-template">
- <title>Δημιουργώντας το Template</title>
-
- <para>Η ενότητα αυτή θα περιγράψει τα βήματα που χρειάζονται
- προκειμένου να δημιουργήσετε το πρωταρχικό template το οποίο θα
- περιέχει το τμήμα των jails που είναι μόνο για ανάγνωση.</para>
-
- <para>Είναι πάντοτε καλή ιδέα να αναβαθμίζετε το &os; στη τελευταία
- έκδοση -RELEASE. Για το σκοπό αυτό, διαβάστε το αντίστοιχο
- <link xlink:href="&url.books.handbook;/makeworld.html">κεφάλαιο</link>
- στο Εγχειρίδιο. Στη περίπτωση που η αναβάθμιση
- δεν είναι εφικτή, θα χρειαστείτε buildworld για να μπορέσετε να
- συνεχίσετε. Επιπλέον θα χρειαστείτε το πακέτο
- <package>sysutils/cpdup</package>. Θα
- χρησιμοποιήσουμε το βοηθητικό πρόγραμμα &man.portsnap.8; για να
- κατεβάσουμε τη συλλογή των Ports. Για τους νεο-εισερχόμενους,
- συνίσταται η ανάγνωση του <link xlink:href="&url.books.handbook;/portsnap.html">κεφαλαίου για το
- Portsnap</link> στο Εγχειρίδιο του &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>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 xml: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>/usr/home</filename>
- αντί για το <filename>/home</filename>
- είναι ότι η φυσική διαδρομή για τον κατάλογο
- <filename>/home </filename> σε μια τυπική
- εγκατάσταση του &os; είναι το
- <filename>/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.
- Προσέξτε εδώ τη χρήση του
- <package>sysutils/cpdup</package>, το οποίο
- επιβεβαιώνει ότι δημιουργείται το σωστό αντίγραφο του κάθε
- καταλόγου:</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 xml:id="jails-service-jails-upgrading">
- <title>Αναβάθμιση</title>
-
- <para>Κάποια στιγμή, θα χρειαστεί να αναβαθμίσετε το σύστημά σας σε
- μια νέα έκδοση του &os;, είτε για λόγους ασφάλειας, είτε γιατί
- υπάρχουν νέες δυνατότητες στην νεώτερη έκδοση οι οποίες είναι
- χρήσιμες για τα jails που ήδη έχετε. Ο τρόπος που χρησιμοποιήσαμε
- για την δημιουργία των jails, επιτρέπει την εύκολη αναβάθμιση τους.
- Επιπλέον, ελαχιστοποιεί το χρόνο διακοπής της λειτουργίας τους, μια
- και θα χρειαστεί να τα σταματήσετε μόνο κατά τα λίγα τελευταία
- λεπτά. Επίσης, παρέχει έναν τρόπο να επιστρέψετε σε παλαιότερες
- εκδόσεις εάν προκύψουν οποιαδήποτε σφάλματα.</para>
-
- <procedure>
- <step>
- <para>Το πρώτο βήμα είναι να αναβαθμίσετε το σύστημα στο οποίο
- φιλοξενούνται τα jails, με το συνήθη τρόπο. Στη συνέχεια
- δημιουργήστε ένα νέο προσωρινό template κατάλογο, μόνο για
- ανάγνωση, στο
- <filename>/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>Το <buildtarget>installworld</buildtarget> δημιουργεί
- μερικούς καταλόγους που δε χρειάζονται, και θα πρέπει
- να διαγραφούν:</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>/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>