diff options
Diffstat (limited to 'el_GR.ISO8859-7/books/handbook/jails/chapter.xml')
-rw-r--r-- | el_GR.ISO8859-7/books/handbook/jails/chapter.xml | 1032 |
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> — + του διαχειριστικού εργαλείου που μπορεί να χρησιμοποιηθεί στο &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; 4.X από τον &a.phk;, αλλά βελτιώθηκαν + πολύ περισσότερο στην έκδοση &os; 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>Έναν κατάλογο με δική του δομή — το αρχικό σημείο + στο οποίο εισέρχεται ένα jail. Από τη στιγμή που μια διεργασία + βρίσκεται μέσα σε ένα jail, δεν επιτρέπεται να βγει έξω από τον + κατάλογο αυτό. Τα προβλήματα που ταλαιπωρούσαν τον σχεδιασμό του + &man.chroot.2; δεν επηρεάζουν τα jails του &os;.</para> + </listitem> + + <listitem> + <para>Ένα hostname (όνομα συστήματος) — το hostname το οποίο + θα χρησιμοποιηθεί μέσα στο jail. Τα jails χρησιμοποιούνται + κυρίως για την εξυπηρέτηση δικτυακών υπηρεσιών, + επομένως η ύπαρξη ενός χαρακτηριστικού hostname που να + περιγράφει ταυτόχρονα και τη χρήση του, μπορεί να βοηθήσει αρκετά + τον διαχειριστή συστήματος.</para> + </listitem> + + <listitem> + <para>Μια διεύθυνση <acronym>IP</acronym> — αυτή η διεύθυνση + αντιστοιχεί σε ένα jail και δεν μπορεί να αλλάξει κατά τη + διάρκεια της ζωής του. Η διεύθυνση IP ενός jail είναι συνήθως + μία διεύθυνση τύπου alias για μια ήδη υπάρχουσα διεπαφή δικτύου + (network interface), αλλά κάτι τέτοιο δεν είναι απαραίτητο.</para> + </listitem> + + <listitem> + <para>Μία εντολή — η διαδρομή προς ένα εκτελέσιμο το οποίο θα + εκτελείται μέσα στο 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, με έναν ασφαλή + όμως τρόπο — χρησιμοποιώντας προσαρτήσεις τύπου + &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 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> |