Eισαγωγή στο Linux

Ένας πρακτικός οδηγός

Machtelt Garrels 

Xalasys.com


                        <tille wants no spam _at_ xalasys dot com>
                    

Έκδοση 1.24 20061101

Copyright © 2002, 2003, 2004, 2005, 2006 Machtelt Garrels

Πρώτη δημοσίευση Δεκέμβριος 2002

Πρώτη δημοσίευση Ελληνικής μετάφρασης Οκτώβριος 2007


Περιεχόμενα
Εισαγωγή
1. Γιατί αυτός ο οδηγός;
2. Ποιός πρέπει να διαβάσει αυτό το βιβλίο;
3. Νέες εκδόσεις και διαθεσιμότητα
4. Ιστορικό αναθεωρήσεων
5. Συνεισφορές
6. Ανάδραση
7. Πληροφορίες πνευματικών δικαιωμάτων
8. Τι χρειάζεστε;
9. Συμβάσεις που χρησιμοποιούνται στο κείμενο
10. Οργάνωση του κειμένου
1. Τι είναι το Linux;
1.1. Ιστορία
1.1.1. UNIX
1.1.2. Ο Linus και το Linux
1.1.3. Τρέχουσες εφαρμογές των συστημάτων Linux
1.2. Η διεπαφή χρήστη
1.2.1. Είναι δύσκολο το Linux;
1.2.2. Το Linux για μη-έμπειρους χρήστες
1.3. Έχει μέλλον το Linux;
1.3.1. Ανοικτός Κώδικας
1.3.2. Εμπειρία δέκα ετών στην υπηρεσία σας
1.4. Ιδιότητες του Linux
1.4.1. Τα υπέρ του Linux
1.4.2. Τα κατά του Linux
1.5. Εκδόσεις του Linux
1.5.1. Linux και GNU
1.5.2. GNU/Linux
1.5.3. Ποιά διανομή να εγκαταστήσω;
1.6. Περίληψη
1.7. Ασκήσεις
2. Γρήγορη εκκίνηση
2.1. Σύνδεση, ενεργοποίση διεπαφής χρήστη, αποσύνδεση
2.1.1. Εισαγωγή
2.1.2. Γραφική διεπαφή
2.1.3. Διεπαφή κειμένου
2.2. Τα απολύτως βασικά
2.2.1 Οι εντολές
2.2.2 Γενικές παρατηρήσεις
2.2.3 Χρήση χαρακτηριστικών του Bash
2.3. Λήψη βοήθειας
2.3.1. Προειδοποίηση
2.3.2. Οι σελίδες man
2.3.2. Περισσότερες πληροφορίες
2.4. Περίληψη
2.5. Ασκήσεις
3. Σχετικά με τα αρχεία και το σύστημα αρχείων
3.1. Γενική επισκόπηση του συστήματος αρχείων του Linux
3.2. Προσανατολισμός στο σύστημα αρχείων
3.3. Διαχείριση αρχείων
3.4. Ασφάλεια αρχείων
3.5. Περίληψη
3.6. Ασκήσεις
4. Διεργασίες
4.1. Οι διεργασίες αναλυτικά
4.2. Εκκίνηση, αρχικοποίηση και τερματισμός
4.3. Διαχείριση διεργασιών
4.4. Χρονοπρογραμματισμός διεργασιών
4.5. Περίληψη
4.6. Ασκήσεις
5. Ανακατεύθυνση Ε/Ε
5.1. Απλή ανακατεύθυνση
5.2. Προχωρημένα θέματα ανακατεύθυνσης
5.3. Φίλτρα
5.4. Περίληψη
5.5. Ασκήσεις
6. Συντάκτες κειμένου
6.1. Συντάκτες κειμένου
6.2. Χρήση του συντάκτη Vim
6.3. Tο Linux στο γραφείο
6.4. Περίληψη
6.5. Ασκήσεις
7. Οικείο περιβάλλον
7.1. Γενική τακτοποίηση
7.2. Το περιβάλλον κειμένου
7.3. Το γραφικό περιβάλλον
7.4. Ρυθμίσεις περιοχών
7.5. Εγκατάσταση νέου λογισμικού
7.6. Περίληψη
7.7. Ασκήσεις
8. Εκτυπώσεις
8.1. Εκτύπωση αρχείων
8.2. Η πλευρά του διακομιστή
8.3. Προβλήματα εκτύπωσης
8.4. Περίληψη
8.5. Ασκήσεις
9. Θεμελιώδεις τεχνικές εφεδρικών αντιγράφων
9.1. Εισαγωγή
9.2. Μεταφορά δεδομένων σε συσκευή εφεδρικών αντιγράφων
9.3. Χρήση rsync
9.4. Κρυπτογράφηση
9.5. Περίληψη
9.6.EΑσκήσεις
10. Δικτύωση
10.1. Επισκόπηση δικτύωσης
10.2. Διαμόρφωση και πληροφορίες δικτύου
10.3. Εφαρμογές Διαδικτύου/Ενδοδικτύου
10.4. Απομακρυσμένη εκτέλεση εφαρμογών
10.5. Ασφάλεια
10.6. Περίληψη
10.7. Ασκήσεις
11. Ήχος και Video
11.1. Τα βασικά του ήχου
11.2. Αναπαραγωγή ήχου και video
11.3. Video, ροές και τηλεόραση
11.4. Τηλεφωνία διαδικτύου
11.5. Περίληψη
11.6. Ασκήσεις
A. Πώς συνεχίζουμε;
A.1. Χρήσιμα βιβλία
A.2. Χρήσιμοι ιστοτόποι
B. Εντολές DOS και Linux
C. Χαρακτηριστικά φλοιών
C.1. Κοινά χαρακτηριστικά
C.2. Διαφορετικά χαρακτηριστικά
D. GNU Free Documentation License
D.1. PREAMBLE
D.2. APPLICABILITY AND DEFINITIONS
D.3. VERBATIM COPYING
D.4. COPYING IN QUANTITY
D.5. MODIFICATIONS
D.6. COMBINING DOCUMENTS
D.7. COLLECTIONS OF DOCUMENTS
D.8. AGGREGATION WITH INDEPENDENT WORKS
D.9. TRANSLATION
D.10. TERMINATION
D.11. FUTURE REVISIONS OF THIS LICENSE
D.12. ADDENDUM: How to use this License for your documents
Ευρετήριο εντολών


Πίνακες
1. Τυπογραφικές συμβάσεις
2-1. Εντολές γρήγορης εκκίνησης
2-2. Συνδυασμοί πλήκτρων στο Bash
2-3. Νέες εντολές στο κεφάλαιο 2: Βασικά
3-1. Tύποι αρχείων στην επιλογή -l
3-2. Υποκατάλογοι του καταλόγου ρίζα
3-3. Συνηθισμένα αρχεία διαμόρφωσης
3-4. Συνηθισμένες συσκευές
3-5. Color-ls προεπιλεγένο σχήμα
3-6. Προεπιλεγμένο σχήμα επιθεμάτων στο ls
3-7. Κωδικοί τύπου πρόσβασης
3-8. Κωδικοί χρήστη και ομάδας
3-9. Προστασία αρχείων με chmod
3-10. Νέες εντολές στο κεφάλαιο 3: Αρχεία και σύστημα αρχείων
3-11. Άδειες πρόσβασης αρχείων
4-1. 'Ελεγχος διεργασιών
4-2. Συνηθισμένα σήματα
4-3. Νέες εντολές στο κεφάλαιο 4: Διεργασίες
5-1. Νέες εντολές στο κεφάλαιο 5: Ανακατεύθυνση Ε/Ε
7-1. Συνηθισμένες μεταβλητές περιβάλλοντος
7-2. Νέες εντολές στο κεφάλαιο 7: Οικείο περιβάλλον
8-1. Νέες εντολές στο κεφάλαιο 8: Εκτυπώσεις
9-1. Νέες εντολές στο κεφάλαιο 9: Εφεδρικά αντίγραφα
10-1. Το απλοποιημένο μοντέλο OSI
10-2. Νέες εντολές στο κεφάλαιο 10: Δικτύωση
11-1. Νέες εντολές στο κεφάλαιο 11: Ήχος
B-1. Επισκόπηση εντολών DOS/Linux
C-1. Κοινά χαρακτηριστικά φλοιών
C-2. Διαφορετικά χαρακτηριστικά φλοιών
Εικόνες
1. Introduction to Linux: εξώφυλλο
1-1. Λογιστικό φύλλο του OpenOffice
2-1. Παράθυρο τερματικού
2-2. Ο Konqueror ως περιηγητής βοήθειας
3-1. Διάταξη συστήματος αρχείων Linux
3-2. Ο μηχανισμός hard και soft link
4-1. Ο μηχανισμός fork-and-exec
4-2. Δεν μπορείς να πας πιο γρήγορα;
4-3. Gnome System Monitor
8-1. Κατάσταση εκτυπωτή μέσω διεπαφής ιστού
9-1. Μορφοποιητής δισκέττας
10-1. Aνάγνωση ταχυδρομείου και ειδήσεων με το Evolution
10-2. X-Chat
10-3. SSH προώθηση X11
11-1. XMMS mp3 player

Εισαγωγή

1. Γιατί αυτός ο οδηγός;

Πολλοί άνθρωποι ακόμη πιστεύουν ότι η εκμάθηση του Linux είναι δύσκολη υπόθεση, ή ότι μόνο οι ειδικοί μπορούν να καταλάβουν πως λειτουργεί ένα σύστημα Linux. Παρόλο την διαθεσιμότητα ευρείας δημόσιας τεκμηρίωσης, αυτή είναι διασκορπισμένη στον Ιστό και συχνά είναι δυσνόητη, αφού συνήθως απευθύνεται σε έμπειρους χρήστες του UNIX ή του Linux. Σήμερα, χάρη στην διαρκή του ανάπτυξη, το Linux κερδίζει οπαδούς τόσο στην εργασία όσο και στο σπίτι. Ο σκοπός αυτού του εγχειριδίου είναι να δείξει στους ανθρώπους κάθε ηλικίας ό,τι το Linux είναι απλό και συναρπαστικό και χρησιμοποιείται για όλους τους λόγους.


2. Ποιος πρέπει να διαβάσει αυτό το βιβλίο?

Αυτός ο οδηγός δημιουργήθηκε για μια γενική επισκόπηση του λειτουργικού συστήματος  Linux, απευθύνεται σε νέους χρήστες ως οδηγός εξερεύνησης και εκκίνησης, με ασκήσεις στο τέλος κάθε κεφαλαίου. Όσο για τους προχωρημένους το εγχειρίδιο αυτό μπορεί να αποτελέσει ένα εγχειρίδιο αναφοράς στη επιφάνεια εργασίας, καθώς και μια συλλογή από τις βασικές γνώσεις που χρειάζονται ως προστάδιο προς τη διαχείριση συστήματος και τη διαχείριση δικτύου. Αυτό το βιβλίο περιέχει πολλά πραγματικά παραδείγματα που προέρχονται από την εμπειρία του συγγραφέα ως χρήστη του  Linux και διαχειριστή δικτύου, εκπαιδευτή και συμβούλου. Ελπίζουμε αυτά τα παραδείγματα να σας βοηθήσουν να καταλάβετε  καλύτερα το σύστημα Linux και να ενθαρρυνθείτε ώστε να δοκιμάσετε τις δικές σας ιδέες.

Ο καθένας που επιθυμεί μια εμπειρία με την γραμμή εντολών, με Linux (και UNIX γενικότερα) θα βρει αυτό το βιβλίο πραγματικά χρήσιμο.


3. Νέες εκδόσεις και διαθεσιμότητα

Αυτό το έγγραφο δημοσιεύτηκε στο μέρος των Οδηγών στη συλλογή του Έργου Ελεύθερης Τεκμηρίωσης για το Linux (Linux Documentation Project collection) στη σελίδα  http://www.tldp.org/guides.html; Επίσης από εδώ μπορείτε να μεταφορτώσετε τις PDF και PostScript εκδόσεις.

Το βιβλίο είναι διαθέσιμο από την Fultus.com Books με κατ' απαίτηση εκτύπωση. Η Fultus διανέμει αυτό το έγγραφο σε πολλά βιβλιοπωλεία, συμπεριλαμβανομένου του Baker & Taylor και σε βιβλιοπωλεία του διαδικτύου Amazon.com, Amazon.co.uk, BarnesAndNoble.com και Google's Froogle.

Εικόνα 1. Introduction to Linux: εξώφυλλο



4. Ιστορικό αναθεωρήσεων

Ιστορικό αναθεωρήσεων

Διόρθωση 1.24

01-11-2006

Διορθώθηκε από: MG

Προστέθηκαν όροι στο ευρετήριο, προετοιμάστηκε για τη δεύτερη τυπωμένη έκδοση, προστέθηκαν σελίδες και πληροφορίες πληρεξούσιου.

Διόρθωση 1.23

2006-07-25

Διορθώθηκε από: MG and FK

Ενημερώσεις και διορθώσεις, μετακινήθηκε το παράρτημα 5 ξανά, προσαρμόστηκε άδεια ώστε να είναι εφικτή η συμπερίληψη στα έγγραφα Debian.

Διόρθωση 1.22

2006-04-06

Διορθώθηκε από: MG

Διορθώθηκε εντελώς το κεφάλαιο 8, στο κεφάλαιο 10: συγκεκριμενοποιήθηκαν τα παραδείγματα, προστέθηκαν πληροφορίες για ifconfig και cygwin, διορθώθηκαν οι εφαρμογές δικτύου.

Διόρθωση 1.21

2006-03-14

Διορθώθηκε από: MG

Προστέθηκαν ασκήσεις στο κεφάλαιο 11, διορθώθηκαν λάθη νέων γραμμών, επισκόπηση των εντολών ολοκληρώθηκε στο κεφάλαιο 9, λίγες διορθώσεις στο κεφάλαιο 10.

Διόρθωση 1.20

2006-01-06

Διορθώθηκε από: MG

Διαχωρισμός του κεφαλαίου 7: Όσα έχουν σχέση με τον ήχο είναι τώρα σε ξεχωριστό κεφάλαιο, κεφάλαιο 11.xml. Μικρές διορθώσεις, αναβαθμίσεις για εντολές όπως aptitude, περισσότερα σε αποθήκευση USB, τηλεφωνία μέσω διαδικτύου, διορθώσεις από τους αναγνώστες.

Διόρθωση 1.13

2004-04-27

Διορθώθηκε από: MG

Τελευταία ανάγνωση προτού σταλούν όλα στο Fultes για εκτύπωση. Προστέθηκε η αναφορά στο Fultes στο μέρος των νέων εκδόσεων, αναβαθμιστήκαν τα μέρη: Συμβάσεις και Οργάνωση. Ελάχιστες αλλαγές στα κεφάλαια 4, 5, 6 και 8, προστέθηκαν πληροφορίες για την επιφάνεια εργασίας (rdesktop info) στο κεφάλαιο  10, αναβαθμίστηκε το γλωσσάρι, αντικαταστάθηκαν οι αναφορές στο fileutils με coreutils, θερμά ευχαριστώ στους μεταφραστές της ινδικής έκδοσης


5. Συνεισφορές

Πολλά ευχαριστώ σε όλους όσους μοιράστηκαν τις εμπειρίες τους. Και ειδικότερα στους Βέλγους χρήστες Linux που με άκουγαν κάθε μέρα και ήταν γενναιόδωροι στα σχόλια τους.

Επίσης μια ιδιαίτερη σκέψη στον Tabatha Marshall για την εξονυχιστική επανεξέταση του εγγράφου, και τον Eugene Crosser ο οποίος εντόπισε τα λάθη που εμείς οι δύο προσπεράσαμε.

Ευχαριστώ σε όλους τους αναγνώστες που με ενημέρωσαν για ελλιπή θέματα και που με βοήθησαν να εντοπίσω και τα τελευταία λαθάκια, ασαφείς ορισμούς και τυπογραφικά λάθη με το να μου στέλνουν τα σχόλια τους. Αυτοί είναι επίσης που με βοήθησαν να κρατήσω αυτό τον οδηγό ενημερωμένο, ένας απ’ αυτούς είναι ο Filipus Klutiero ο οποίος έκανε μια ολοκληρωμένη επανεξέταση το 2005 και 2006 και με βοήθησε να εισάγω τον οδηγό στη συλλογή εγγράφων Debian (Debian docs collection), καθώς και τον Alexey Eremenko που μου έστειλε τα θεμέλια για το κεφάλαιο 11.

Κλείνοντας, ένα μεγάλο ευχαριστώ για τους εθελοντές που έχουν μεταφράσει και κρατούν ενημερωμένο αυτό το έγγραφο στα Γαλλικά, Σουηδικά, Γερμανικά, Farsi, Ινδικά και σε άλλες πολλές γλώσσες. Είναι μια πολύ καλή δουλεία που δεν πρέπει να υποτιμηθεί. Θαυμάζω το κουράγιο σας.

(ΣτΜ: Η ελληνική μετάφραση οφείλεται εν μέρει στους φοιτητές και φοιτήτριες του Τμήματος Εφαρμοσμένης Πληροφορικής του Πανεπιστημίου Μακεδονίας που παρακολούθησαν το μάθημα επιλογής Προγραμματισμός Συστημάτων Ι, το χειμερινό εξάμηνο 2006-2007. Την γενική επιμέλειας, γλωσσική επεξεργασία, καθώς και τη μετάφραση αρκετών τμημάτων που έμειναν 'ορφανά' ανέλαβε ο Κώστας Γ. Μαργαρίτης, καθηγητής του Τμήματος).


6. Ανάδραση

Ελλιπείς πληροφορίες, links, χαρακτήρες; Στείλτε το στον διαχειριστή του εγγράφου:


                    <tille wants no spam _at_ xalasys dot com>
                

Μη ξεχάσετε να το ελέγξετε πρώτα με την τελευταία έκδοση!

(Για την Ελληνική μετάφραση, σχόλια και παρατηρήσεις στη διεύθυνση ηλ. ταχυδρομείου, kmarg@uom.gr, ΣτΜ.)


7. Πληροφορίες πνευματικών δικαιωμάτων

© 2002-2006 Machtelt Garrels.

Παρέχεται η άδεια για αντιγραφή, διανομή και/ή τροποποίηση αυτού του εγγράφου σύμφωνα με τους όρους της Άδειας Ελεύθερης Τεκμηρίωσης (GNU GNU Free Documentation License), Έκδοση 1.2 ή οποιαδήποτε επόμενη έκδοση που δημοσιεύτηκε από τo Ίδρυμα Ελεύθερου Λογισμικού (Free Software Foundation), χωρίς Invariant Sections, Front-Cover Texts, και Back-Cover Texts. Ένα αντίγραφο της άδειας περιέχεται στο Παράρτημα Δ και ονομάζεται "GNU Free Documentation License".

Ο συγγραφέας και ο εκδότης κατέβαλαν κάθε προσπάθεια για την προετοιμασία αυτού του βιβλίου, να πιστοποιήσουν την ακρίβεια των πληροφοριών. Παρόλα αυτά, οι πληροφορίες που περιέχονται σε αυτό το βιβλίο δίδονται χωρίς εγγύηση, είτε εκφράζονται είτε εννοούνται. Ούτε ο συγγραφέας ούτε ο εκδότης καθώς και ούτε οποιοσδήποτε προμηθευτής ή διανομέας θα καθιστούν υπεύθυνοι για οποιαδήποτε ζημιά προκληθεί ή υποτίθεται ότι προκλήθηκε είτε άμεσα είτε έμμεσα από αυτό το βιβλίο.

Τα λογότυπα, τα σήματα κατατεθέντα και τα σύμβολα που χρησιμοποιούνται σε αυτό το βιβλίο είναι ιδιοκτησίες των αντίστοιχων ιδιοκτητών.

(Τα αντίστοιχα ισχύουν και για την Ελληνική μετάφραση του βιβλίου, Μετάφραση: Κ.Γ. Μαργαρίτης και ομάδα φοιτητών του Τμήματος Εφαρμοσμένης Πληροφορικής Πανεπιστημίου Μακεδονίας, 2006-2007, ΣτΜ.).


8. Τι χρειάζεστε;

Θα χρειαστείτε έναν υπολογιστή και ένα αποθηκευτικό μέσο όπου περιέχει μια διανομή του Linux. Τα περισσότερα σε αυτόν τον οδηγό εφαρμόζονται σε όλες τις διανομές του Linux - και UNIX γενικότερα. Εκτός από χρόνο, δεν υπάρχουν επιπλέον απαιτήσεις.

Το Installation HOWTO περιέχει χρήσιμες πληροφορίες για το πως να αποκτήσεις λογισμικό Linux και να το εγκαταστήσεις στον υπολογιστή σου. Επίσης αναφέρονται οι απαιτήσεις σε υλικό καθώς και η συνύπαρξη με άλλα λειτουργικά συστήματα.

Μπορείτε να μεταφορτώσετε τα αντίγραφα (images) του CD από τη τοποθεσία linux-iso.com και πολλές άλλες τοποθεσίες, δείτε στο Παράρτημα Α.

Μια ενδιαφέρουσα παραλλαγή για αυτούς που δεν τολμούν μια πραγματική εγκατάσταση Linux στο ν υπολογιστή τους, υπάρχουν οι διανομές Linux που τρέχουν από CD, τέτοια είναι η διανομή Knoppix.


9. Συμβάσεις που χρησιμοποιούνται στο κείμενο

TΟι ακόλουθες τυπογραφικές και πιο χρησιμοποιούμενες συμβάσεις που εμφανίζονται σ’ αυτό το κείμενο είναι:

Πίνακας 1. Τυπογραφικές συμβάσεις

Τύπος στο κείμενο

Σημασία

"Κείμενο σε εισαγωγικά"

Είναι λόγια άλλων ανθρώπων ή αποτελέσματα υπολογιστή σε ακριβή μεταφορά.

όψη της κονσόλας

Κατά λέξη τα δεδομένα εισόδου και εξόδου στον υπολογιστή που βρίσκονται στην κονσόλα, συνήθως αποδίδονται με φόντο χρώματος ανοιχτό γκρι.

εντολή

Το όνομα μιας εντολής που μπορεί να εισαχθεί στην κονσόλα.

ΜΕΤΑΒΛΗΤΗ

Το όνομα μιας μεταβλητής ή ενός δείκτη που συμπεριφέρεται ως μεταβλητή, όπως στην περίπτωση $VARNAME.

επιλογή

Επιλογή σε μια εντολή, όπως στην περίπτωση "η επιλογή -a στην εντολή ls".

όρισμα

Όρισμα σε μια εντολή, όπως "read man ls ".

προτροπή

Προτροπή του χρήστη, συνήθως ακολουθούνται από μια εντολή που εισάγεις στην κονσόλα, όπως για παράδειγμα

hilda@home> ls -l

Εντολή επιλογές ορίσματα

Η σύνοψη μιας εντολής ή διαφορετικά η γενική σύνταξη της σε μια γραμμή.

Όνομα αρχείου

Το όνομα ενός αρχείου ή ενός καταλόγου, για παράδειγμα "Change to the /user/bin directory."

Κλειδί

Πλήκτρα του πληκτρολογίου, όπως "πληκτρολόγησε Q για έξοδο(quit)".

κουμπί

Γραφικό κουμπί για πάτημα (click), όπως το κουμπί OK.

Μενού->Επιλογή

Επιλογή από γραφικό μενού, για παράδειγμα:

"SelectHelp->About Mozilla in your browser."

Ορολογία

Σημαντικός όρος ή ιδέα: "Ο πυρήνας του Linux είναι η καρδιά του συστήματος."

\

Η κάθετος στην κονσόλα ή στη σύνταξη εντολών σημαίνει ότι η γραμμή δεν έχει τελειώσει ακόμη. Με άλλα λόγια, μια μεγάλη εντολή χωρίζεται σε πολλές γραμμές, \ σημαίνει μην πατήσεις το Enter ακόμη!"

Βλέπε Κεφάλαιο 1

Σύνδεσμος σχετικός με το αντικείμενο μέσα στον οδηγό.

Ο συγγραφέας

Διαθέσιμος σύνδεσμος σε μια πηγή σχετικών πληροφοριών στο διαδίκτυο.

Χρησιμοποιούνται οι παρακάτω εικόνες:

Note

Αυτό είναι μια σημείωση

 

Περιέχει πρόσθετες πληροφορίες και σχόλια.

Caution

Αυτό είναι προειδοποίηση

 

Σημαίνει πρόσεχε.

Warning

Αυτό είναι έντονη προειδοποίηση

 

Πρόσεχε πολύ.

Tip

Αυτό είναι πληροφορία

 

Πληροφορίες και κόλπα.


10. Οργάνωση του κειμένου

Αυτός ο οδηγός αποτελεί μέρος της Έργου Τεκμηρίωσης του Linux (Linux Documentation Project) και σκοπός του είναι να γίνει η βάση για όλα τα υπόλοιπα μέρη της εργασίας. Με αυτό τον τρόπο, παρέχονται οι βασικές γνώσεις που χρειάζεται όποιος επιθυμεί να χειριστεί σύστημα Linux, ενώ ταυτόχρονα προσπαθεί συνειδητά να αποτρέψει την ξανα-ανακάλυψη του τροχού. Έτσι, μπορείς να αναμένεις αυτό το βιβλίο ατελές και γεμάτο διασυνδέσεις (links) σε πηγές για επιπλέον πληροφορίες στο σύστημα σου, στο Διαδίκτυο (Internet) και στην τεκμηρίωση του συστήματός σου.

Το πρώτο κεφάλαιο αποτελεί μια εισαγωγή στο Linux· τα επόμενα δύο αναλύουν απόλυτα τις βασικές εντολές. Τα κεφάλαια 4 και 5 περιέχουν κάποια πιο προχωρημένα αλλά εξίσου βασικά θέματα. Το κεφάλαιο 6 απαιτείται για να προχωρήσετε στα επόμενα, καθώς αναφέρεται στα αρχεία κειμένου (editing files), μια ικανότητα του χρειάζεται για να περάσεις από το επίπεδο του αρχάριου στο επίπεδο του χρήστη. Τα κεφάλαια που ακολουθούν αναλύουν ακόμη πιο εξειδικευμένα θέματα που πρέπει να αντιμετωπίζεις στην καθημερινή χρήση του Linux.

Όλα τα κεφάλαια περιέχουν ασκήσεις που εξετάζουν το πόσο έτοιμος είσαι για το επόμενο κεφάλαιο.

·        Κεφάλαιο 1: Τι είναι το Linux, πως δημιουργήθηκε, πλεονεκτήματα και μειονεκτήματα, τι επιφυλάσσει το μέλλον για το Linux, σε ποιος απευθύνεται, εγκατάσταση στον υπολογιστή.

·        Κεφάλαιο  2: Εκκίνηση, σύνδεση με το σύστημα, βασικές εντολές, αναζήτηση βοήθειας.

·        Κεφάλαιο  3: Το σύστημα αρχείων, σημαντικά αρχεία και κατάλογοι, διαχείριση αρχείων και καταλόγων, προστασία των δεδομένων σας.

·        Κεφάλαιο  4: Κατανόηση και διαχείριση διαδικασιών, διαδικασίες εκκίνηση και τερματισμού, αναβολή εργασιών, επαναληπτικές εργασίες.

·        Κεφάλαιο  5: Ποιες είναι οι βασικές είσοδοι, έξοδοι και λάθη και πως μπορούν αυτά τα χαρακτηριστικά να χρησιμοποιηθούν στην γραμμή εντολών.

·        Κεφάλαιο 6: Γιατί πρέπει να μάθεις να δουλεύεις με έναν κειμενογράφο, συζήτηση για τους πιο δημοφιλείς κειμενογράφους.

·        Κεφάλαιο 7: Διαμόρφωση του γραφικού, του κειμένου και του ακουστικού περιβάλλοντος, ρυθμίσεις γλώσσας, συμβουλές για προσθήκη επιπλέον λογισμικού.

·        Κεφάλαιο  8: Μετατροπή αρχείων σε εκτυπώσιμη μορφή, πώς να τα εκτυπώσετε, προτάσεις για επίλυση προβλημάτων εκτύπωσης.

·        Κεφάλαιο 9: Προετοιμασία δεδομένων για αποθήκευση, ανάλυση διαφόρων εργαλείων, απομακρυσμένη δημιουργία εφεδρικών αντιγράφων.

·        Κεφάλαιο 10: Γενική επισκόπηση των εργαλείων δικτύου για το Linux και εφαρμογές χρηστών, με μια μικρή αναφορά στα προγράμματα δαίμονες και στην ασφάλεια των δικτύων.

·        Κεφάλαιο 11: Ήχος και βίντεο, περιλαμβανομένου φωνής μέσω IP (Voice over IP) και καταγραφή ήχου αναλύονται σ’ αυτό το κεφάλαιο.

·        Παράρτημα A: Ποια βιβλία να διαβάσετε και ποιες ιστοσελίδες (sites) να επισκεφτείτε όταν θα τελειώσετε αυτό το εγχειρίδιο.

·        Παράρτημα  B: Μια σύγκριση.

·        Παράρτημα Γ : Αν ποτέ κολλήσετε, αυτοί οι πίνακες θα είναι σωτήριοι. Επίσης ένα καλό επιχείρημα όταν το αφεντικό σας επιμένει πως εσείς πρέπει να χρησιμοποιήσετε το δικό του αγαπημένο κέλυφος.

·        Παράρτημα  Δ: Τι μπορείς να κάνεις με αυτό τον οδηγό, από τη νομική πλευρά.


Κεφάλαιο 1. Τι είναι το Linux;

Θα ξεκινήσουμε με μία περίληψη του τρόπου με τον οποίο το Linux έγινε το λειτουργικό σύστημα που είναι σήμερα. Θα συζητήσουμε την παλαιότερη και μελλοντική του ανάπτυξη και θα ρίξουμε μια κοντινότερη ματιά στα πλεονεκτήματα και μειονεκτήματα αυτού του συστήματος. Θα μιλήσουμε για τις διανομές του, για το Λογισμικό Ανοιχτού Κώδικα (Open Source) γενικά και θα προσπαθήσουμε να εξηγήσουμε μερικά πράγματα για το GNU.
Αυτό το κεφάλαιο απαντά σε ερωτήσεις όπως:

1.1. Ιστορία

1.1.1. UNIX

Για να κατανοήσουμε τη δημοτικότητα του Linux, χρειάζεται να ταξιδέψουμε πίσω στο χρόνο, περίπου 30 χρόνια...

Φανταστείτε τους υπολογιστές σαν μεγάλα σπίτια, ακόμα και στάδια. Ενώ τα μεγέθη των υπολογιστών αυτών αποτελούν ουσιαστικό πρόβλημα, υπήρχε κάτι που έκανε την κατάσταση ακόμα χειρότερη: κάθε υπολογιστής είχε διαφορετικό λειτουργικό σύστημα. Το λογισμικό έπρεπε πάντα να προσαρμόζεται για να εξυπηρετήσει ένα συγκεκριμένο σκοπό, και το λογισμικό ενός δοσμένου συστήματος δεν έτρεχε σε άλλο σύστημα. Η ικανότητα εργασίας με ένα σύστημα δεν σήμαινε αυτόματα την ικανότητα εργασίας και με κάποιο άλλο . Ήταν δύσκολο, τόσο για τους χρήστες όσο και για τους διαχειριστές συστήματος.

Οι υπολογιστές τότε ήταν υπερβολικά ακριβοί, και έπρεπε να γίνουν θυσίες ακόμα και μετά την αρχική αγορά μόνο και μόνο για να καταλάβουν οι χρήστες πως λειτουργούν. Το συνολικό κόστος ανά μονάδα υπολογιστικής ισχύος ήταν τεράστιο.

Τεχνολογικά ο κόσμος δεν ήταν τόσο ανεπτυγμένος, οπότε θα έπρεπε να ανεχθούν τους υπερμεγέθεις υπολογιστές για άλλη μια δεκαετία. Το 1969, μια ομάδα ερευνητών στα εργαστήρια Bell Labs ξεκίνησαν να εργάζονται για την ανεύρεση λύσης στο πρόβλημα του λογισμικού, έτσι ώστε να διευθετηθούν τα θέματα συμβατότητας. Αυτοί ανάπτυξαν ένα νέο λειτουργικό σύστημα που ήταν

  1. Απλό και κομψό.

  2. Γραμμένο στην γλώσσα προγραμματισμού C αντί για κώδικα assembly.

  3. Ικανό να ανακυκλώνει κώδικα.

Οι ερευνητές των Bell Labs ονόμασαν το πρόγραμμα τους "UNIX."

Τα χαρακτηριστικά ανακυκλωμένου κώδικα ήταν πολύ σημαντικά. Μέχρι τότε, όλα τα εμπορικώς διαθέσιμα υπολογιστικά συστήματα ήταν γραμμένα σε κώδικα ειδικά ανεπτυγμένο για ένα σύστημα. Το UNIX από την άλλη χρειαζόταν μόνο ένα μικρό τμήμα από αυτόν τον εξειδικευμένο κώδικα, το οποίο είναι τώρα ο κοινώς επονομαζόμενος πυρήνας. Ο πυρήνας αυτός είναι το μοναδικό τμήμα κώδικα που χρειάζεται να προσαρμοστεί για κάθε συγκεκριμένο σύστημα και αποτελεί τη βάση του συστήματος UNIX. Το λειτουργικό σύστημα και όλες οι άλλες λειτουργίες χτίστηκαν γύρω από τον πυρήνα και γράφτηκαν σε γλώσσα ανώτερου επιπέδου, τη C. Η γλώσσα αυτή είχε αναπτυχθεί ειδικά για τη δημιουργία του συστήματος UNIX. Με τη χρήση αυτής της νέας τεχνικής, ήταν ευκολότερο να αναπτυχθεί ένα λειτουργικό σύστημα που μπορούσε να λειτουργήσει σε διάφορους τύπους υλικού.

Οι πωλητές λογισμικού ανταποκρίθηκαν γρήγορα, εφόσον μπορούσαν να πουλήσουν 10 φορές περισσότερο λογισμικό σχεδόν χωρίς προσπάθεια. Νέες περίεργες συνθήκες εμφανίστηκαν: φανταστείτε για παράδειγμα υπολογιστές από διαφορετικούς πωλητές να επικοινωνούν στο ίδιο δίκτυο, ή χρήστες που δουλεύουν σε διαφορετικά συστήματα, χωρίς την ανάγκη για επιπλέον εκπαίδευση, να χρησιμοποιούν έναν άλλο υπολογιστή. Το UNIX βοήθησε σε πολύ μεγάλο βαθμό τους χρήστες να συμβαδίσουν με διαφορετικά συστήματα.

Κατά τη διάρκεια των επόμενων δύο δεκαετιών η ανάπτυξη του UNIX συνεχίστηκε. Περισσότερα πράγματα ήταν δυνατό να γίνουν και περισσότεροι πωλητές υλικού και λογισμικού πρόσθεσαν υποστήριξη για το UNIX στα προϊόντα τους.

Το UNIX θεμελιώθηκε αρχικά μόνο σε πολύ μεγάλα περιβάλλοντα με υπολογιστές μεγάλης ισχύος (mainframes) και μίνι-υπολογιστές (σημειώστε ότι το PC είναι ένας “μικρό”-υπολογιστής). Έπρεπε να εργάζεσαι σε πανεπιστήμιο, για την κυβέρνηση ή για μεγάλους οικονομικούς οργανισμούς για να έρθεις σε επαφή με ένα σύστημα UNIX.

Όμως μικρότεροι υπολογιστές ανακαλύπτονταν, και μέχρι τα τέλη του '80, πολλοί άνθρωποι είχαν οικιακούς υπολογιστές. Μέχρι τότε, υπήρχαν διαθέσιμες αρκετές εκδόσεις του UNIX για αρχιτεκτονική PC, αλλά καμία από αυτές δεν ήταν πραγματικά δωρεάν και το πιο σημαντικό: ήταν όλες τρομερά αργές, οπότε οι περισσότεροι χρησιμοποιούσαν MS DOS ή Windows 3.1 στα οικιακά τους PC.


1.1.2. Ο Linus και το Linux

Στο ξεκίνημα του '90 τα οικιακά PC ήταν επιτέλους αρκετά ικανά να εκτελέσουν ένα πλήρες UNIX. Ο Linus Torvalds, ένας νεαρός που σπούδαζε επιστήμη υπολογιστών στο πανεπιστήμιο του Ελσίνκι, σκέφτηκε ότι θα ήταν καλή ιδέα να υπάρχει μία σχεδόν δωρεάν διαθέσιμη ακαδημαϊκή έκδοση του UNIX, και αμέσως ξεκίνησε να γράφει κώδικα.

Ξεκίνησε να κάνει ερωτήσεις, ψάχνοντας απαντήσεις και λύσεις που θα τον βοηθούσαν να αποκτήσει UNIX στο PC του. Παρακάτω βρίσκεται μία από τις πρώτες του ταχυδρομικές επιστολές στο comp.os.minix, που χρονολογείται από το 1991:

From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: Gcc-1.40 and a posix-question
Message-ID: <1991Jul3.100050.9886@klaava.Helsinki.FI>
Date: 3 Jul 91 10:00:50 GMT
Hello netlanders,
Due to a project I'm working on (in minix), I'm interested in the posix
standard definition. Could somebody please point me to a (preferably)
machine-readable format of the latest posix rules? Ftp-sites would be
nice.

Από το ξεκίνημα, ο στόχος του Linus ήταν να υπάρχει ένα ελεύθερο σύστημα απολύτως σύμφωνο με το πρωτότυπο UNIX. Αυτός ήταν ο λόγος που ρώτησε για τις POSIX προδιαγραφές, με το POSIX να είναι ακόμα το πρότυπο του UNIX.

Εκείνες τις μέρες το plug-and-play δεν είχε εφευρεθεί ακόμη, αλλά ο κόσμος που ενδιαφερόταν να αποκτήσει ένα δικό του σύστημα UNIX ήταν τόσος πολύς, που αυτό ήταν μόνο ένα μικρό εμπόδιο. Νέοι οδηγοί δίσκων έγιναν διαθέσιμοι για κάθε είδους υλικό, σε μια διαρκώς αυξανόμενη ταχύτητα. Σχεδόν μόλις ένα νέο τμήμα υλικού γινόταν διαθέσιμο, κάποιος το αγόραζε και το υπέβαλλε σε δοκιμή για το Linux, όπως το σύστημα ονομάστηκε σταδιακά, διαθέτοντας περισσότερο ελεύθερο κώδικα για ένα ακόμα μεγαλύτερο εύρος υλικού. Αυτοί οι προγραμματιστές δεν σταμάτησαν στο δικό τους PC, κάθε τμήμα υλικού που μπορούσαν να βρουν ήταν χρήσιμο για το Linux.

Εκείνο το καιρό, οι άνθρωποι αυτοί αποκαλούνταν "σπασίκλες" ή "φρικιά", αλλά δεν τους ένοιαζε, όσο η λίστα του υποστηριζόμενου υλικού μεγάλωνε όλο και περισσότερο. Χάρη σε αυτούς τους ανθρώπους, το Linux δεν είναι τώρα μόνο ιδανικό να τρέξει σε ένα νέο PC, αλλά είναι επίσης το επιλεγμένο σύστημα για το παλιό και εξωτικό υλικό το οποίο θα ήταν άχρηστο αν το Linux δεν υπήρχε.

Δύο χρόνια μετά την επιστολή του Linus, υπήρχαν 12000 χρήστες Linux. Το σχέδιο, που έγινε δημοφιλές με όσους ασχολούνταν με αυτό από χόμπι, διευρυνόταν σταθερά, ενώ παρέμενε όλο το διάστημα στα όρια του προτύπου POSIX. Όλα τα χαρακτηριστικά του UNIX προστέθηκαν στα επόμενα δύο χρόνια, καταλήγοντας στο ώριμο λειτουργικό σύστημα που έχει γίνει σήμερα το Linux. Το Linux είναι ένας πλήρης κλώνος του UNIX, κατάλληλος για χρήση τόσο σε σταθμούς εργασίας όσο και σε μεσαίους και μεγάλους διακομιστές. Σήμερα, πολλοί από τους πιο σημαντικούς παίκτες στην αγορά υλικού και λογισμικού ο καθένας έχει την ομάδα του από προγραμματιστές Linux, στον τοπικό σας πωλητή μπορείτε ακόμα να αγοράσετε προ-εγκατεστημένα συστήματα Linux με επίσημη υποστήριξη – επίσης όμως υπάρχει ακόμα πολύ υλικό και λογισμικό που δεν υποστηρίζεται.


1.1.3. Τρέχουσες εφαρμογές των συστημάτων Linux

Σήμερα το Linux έχει μπει στην αγορά υπολογιστών γραφείου. Οι προγραμματιστές Linux αρχικά επικεντρώθηκαν στη δικτύωση και τις υπηρεσίες, ενώ οι εφαρμογές γραφείου ήταν ο τελευταίος φραγμός που γκρεμίστηκε. Δεν μας αρέσει να παραδεχόμαστε ότι η Microsoft κυριαρχεί στην αγορά, οπότε πολλές από τις εναλλακτικές λύσεις ξεκίνησαν τα τελευταία χρόνια για να κάνουν το Linux μία αποδεκτή επιλογή σε ένα σταθμό εργασίας, παρέχοντας μία απλή διεπαφή χρήστη και εφαρμογές γραφείου συμβατές με αυτές της MS όπως επεξεργαστές κειμένου, λογιστικά φύλλα, λογισμικό παρουσιάσεων κ.α..

Από την πλευρά των διακομιστών, το Linux είναι γνωστό σαν μία σταθερή και αξιόπιστη πλατφόρμα, παρέχοντας βάσεις δεδομένων και εμπορικές υπηρεσίες για εταιρίες όπως η Amazon, το γνωστό ηλεκτρονικό βιβλιοπωλείο, το αμερικανικό ταχυδρομείο, ο γερμανικός στρατός και άλλοι. Ειδικά οι πάροχοι Διαδικτύου και οι διαδικτυακών υπηρεσιών εκδηλώνουν προτίμηση στο Linux ως τοίχο προστασίας (firewall), διακομιστή διαμεσολάβησης ή διακομιστή ιστού (proxy- και web server), και θα βρείτε ένα κουτί Linux κοντά σε κάθε διαχειριστή συστήματος UNIX που εκτιμά έναν άνετο σταθμό διαχείρισης. Συστοιχίες (clusters) από μηχανές Linux χρησιμοποιούνται στη δημιουργία ταινιών όπως οι "Titanic", "Shrek" κ.α. . Σε ταχυδρομεία, αποτελούν τα νευραλγικά κέντρα που δρομολογούν την αλληλογραφία και σε μεγάλες μηχανές αναζήτησης, οι συστοιχίες χρησιμοποιούνται για να πραγματοποιούν αναζητήσεις στο Internet. Αυτές είναι μόνο λίγες από τις χιλιάδες 'βαριές' εργασίες που το Linux πραγματοποιεί κάθε μέρα στον κόσμο.

Αξίζει να σημειωθεί ότι το σύγχρονο Linux τρέχει όχι μόνο σε σταθμούς εργασίας, μεσαίους και μεγάλους διακομιστές, αλλά ακόμη και σε συσκευές όπως PDA, κινητά τηλέφωνα, σε πληθώρα από ενσωματωμένες εφαρμογές ακόμα επίσης και σε πειραματικά ωρολόγια χειρός. Αυτό κάνει το Linux το μοναδικό λειτουργικό σύστημα στον κόσμο που καλύπτει τέτοια ευρεία γκάμα υλικού.


1.2. Η διεπαφή χρήστη

1.2.1. Είναι δύσκολο το Linux;

Εάν το Linux είναι δύσκολο στη μάθηση εξαρτάται από το πρόσωπο που ρωτάτε. Έμπειροι χρήστες UNIX θα πουν όχι, επειδή το Linux είναι ένα ιδανικό λειτουργικό σύστημα για δυνατούς χρήστες και προγραμματιστές, και έχει αναπτυχθεί και αναπτύσσεται από τέτοιους ανθρώπους.

Όλα όσα ένας καλός προγραμματιστής επιθυμεί είναι διαθέσιμα: μεταγλωττιστές, βιβλιοθήκες, εργαλεία ανάπτυξης και αποσφαλμάτωσης. Αυτά τα πακέτα υπάρχουν σε κάθε πρότυπη διανομή Linux. Ο μεταγλωττιστής-C περιλαμβάνεται δωρεάν – πράγμα που αντιτίθεται σε πολλές διανομές UNIX οι οποίες απαιτούν δαπάνες αδειοδότησης για αυτό το εργαλείο. Όλη η τεκμηρίωση και τα εγχειρίδια υπάρχουν, και συχνά περιλαμβάνονται παραδείγματα για να σας βοηθήσουν να ξεκινήσετε σε χρόνο μηδέν. Μοιάζει σαν το UNIX και η εναλλαγή μεταξύ του UNIX και του Linux να είναι φυσικό επακόλουθο.

Στον πρώτο καιρό του Linux, το να είναι κάποιος έμπειρος χρήστης έμοιαζε να ήταν προαπαιτούμενο για να ξεκινήσει να εργάζεται με το σύστημα. Αυτοί που κατείχαν το χειρισμό του Linux ένιωθαν καλύτερα από τους υπόλοιπους "αποτυχημένους" που δεν είχαν αφυπνιστεί ακόμα. Ήταν κοινή τακτική να πεις σε έναν αρχάριο χρήστη να "RTFM" (read the f...g. manuals-διάβασε τα γ....α εγχειρίδια). Ενώ τα εγχειρίδια υπήρχαν σε κάθε σύστημα, ήταν δύσκολο να βρεθεί η τεκμηρίωση, και ακόμα και αν κάποιος την έβρισκε, οι εξηγήσεις ήταν σε τόσο τεχνικούς όρους που ο νέος χρήστης αποθαρρυνόταν εύκολα από την εκμάθηση του συστήματος.

Η επιτροπή χρηστών-Linux άρχιζε να αντιλαμβάνεται ότι για να γίνει το Linux κάποτε σημαντικός ανταγωνιστής στην αγορά λειτουργικών συστημάτων, έπρεπε να γίνουν σημαντικές αλλαγές στην προσβασιμότητα του συστήματος.


1.2.2. Το Linux για μη-έμπειρους χρήστες

Εταιρίες όπως η RedHat, η SuSE, η Mandriva (πιο πρόσφατα ή Canonical ΣτΜ) ιδρύθηκαν, παρέχοντας συσκευασμένες διανομές Linux κατάλληλες για μαζική κατανάλωση. Αυτές ολοκλήρωσαν πολλές από τις γραφικές διεπαφές χρήστη (GUI), που είχαν αναπτυχθεί από την κοινότητα, για να διευκολύνουν τη διαχείριση προγραμμάτων και υπηρεσιών. Ως χρήστης Linux σήμερα έχετε τα μέσα για να γνωρίσετε το σύστημα σας από μέσα προς τα έξω, αλλά δεν είναι πλέον απαραίτητο να έχετε αυτή τη γνώση για να κάνετε το σύστημα σας να συμμορφώνεται με τα αιτήματα σας.

Στη σημερινή εποχή μπορείτε να συνδεθείτε γραφικά και να ξεκινήσετε όλες τις απαιτούμενες εφαρμογές χωρίς καν να χρειάζεται να πληκτρολογήσετε ούτε έναν χαρακτήρα, ενώ έχετε ακόμη την δυνατότητα να έχετε πρόσβαση στον πυρήνα του συστήματος εάν αυτό χρειάζεται. Εξαιτίας της δομής του, το Linux επιτρέπει στον χρήστη να αναπτυχθεί μέσα στο σύστημα: το Linux ταιριάζει το ίδιο σε παλιούς αλλά και νέους χρήστες. Οι νέοι χρήστες δεν εξαναγκάζονται να κάνουν δύσκολα πράγματα, ενώ οι έμπειροι χρήστες δεν εξαναγκάζονται να δουλεύουν με τον ίδιο τρόπο όπως δούλευαν όταν αρχικά ξεκίνησαν να μαθαίνουν Linux.

Όσο η ανάπτυξη στον τομέα των υπηρεσιών συνεχίζεται, σπουδαία πράγματα γίνονται για τους χρήστες υπολογιστών γραφείου, που θεωρούνται γενικά σαν την ομάδα που είναι λιγότερο πιθανό να κατανοήσει πως δουλεύει ένα σύστημα. Όσοι αναπτύσσουν εφαρμογές υπολογιστών γραφείου καταβάλουν απίστευτες προσπάθειες να δημιουργήσουν τους πιο όμορφους υπολογιστές γραφείου που έχετε δει, ή να κάνουν την Linux μηχανή σας να μοιάζει σαν τον προηγούμενό σας MS Windows ή MacIntosh σταθμό εργασίας. Οι τελευταίες υλοποιήσεις επίσης περιλαμβάνουν υποστήριξη επιτάχυνσης 3D και υποστήριξη για συσκευές USB, ενημερώσεις του συστήματος και εγκατάσταση / ενημέρωση πακέτων λογισμικού με ένα κλικ, κ.α.. Το Linux τα έχει αυτά, και προσπαθεί να παρουσιάσει όλες τις διαθέσιμες υπηρεσίες σε λογική μορφή που μπορούν να κατανοήσουν οι συνηθισμένοι άνθρωποι. Παρακάτω βρίσκεται μια σύντομη λίστα που περιέχει μερικά σπουδαία παραδείγματα· αυτοί οι ιστοτόποι περιέχουν πολλές εικόνες που θα σας δώσουν μια ιδέα από το πως μπορεί να μοιάζει μια επιφάνεια εργασίας Linux:


1.3. Έχει μέλλον το Linux;

1.3.1. Ανοικτός Κώδικας

Η ιδέα πίσω από το Λογισμικό Ανοικού Κώδικα είναι μάλλον απλή: όταν οι προγραμματιστές μπορούν να διαβάσουν, να διανείμουν και να αλλάξουν κώδικα, ο κώδικας θα ωριμάσει. Οι άνθρωποι μπορούν να τον υιοθετήσουν, να τον διαμορφώσουν, να τον αποσφαλματώσουν, και μπορούν αυτό να το κάνουν σε μία ταχύτητα που εκμηδενίζει την απόδοση αυτών που αναπτύσσουν λογισμικό στις συμβατικές εταιρίες. Το λογισμικό αυτό θα είναι πιο ευέλικτο και καλύτερης ποιότητας από το λογισμικό που αναπτύχθηκε χρησιμοποιώντας τα συμβατικά κανάλια, επειδή πολλοί άνθρωποι το έχουν δοκιμάσει σε πολλές διαφορετικές συνθήκες απ' ότι ο κλειστός δημιουργός λογισμικού θα μπορούσε ποτέ.

Η πρωτοβουλία για το Λογισμικό Ανοικτού Κώδικα ξεκίνησε για να ξεκαθαρίσει αυτό στον εμπορικό κόσμο, και πολύ αργά, οι εταιρίες άρχισαν να παίρνουν το μήνυμα. Ενώ πολλοί ακαδημαϊκοί και τεχνικοί είχαν ήδη πειστεί εδώ και 20 χρόνια ότι αυτός είναι ο τρόπος για να προχωρήσουμε, οι εταιρίες χρειάστηκαν εφαρμογές όπως το Διαδίκτυο για να αντιληφθούν ότι μπορούν να έχουν κέρδος από το Λογισμικό Ανοιχτού Κώδικα. Σήμερα το Linux έχει ξεπεράσει το στάδιο που ήταν αποκλειστικά ένα ακαδημαϊκό σύστημα, χρήσιμο μόνο σε μια χούφτα ανθρώπων με τεχνικό υπόβαθρο. Πλέον το Linux παρέχει περισσότερα από το λειτουργικό σύστημα: υπάρχει μια ολόκληρη υποδομή που υποστηρίζει την αλυσίδα της προσπάθειας δημιουργίας ενός λειτουργικού συστήματος, της κατασκευής και δοκιμής προγραμμάτων γι' αυτό, της προσφοράς όλων αυτών στους χρήστες, της παροχής συντήρησης, ενημερώσεων και υποστήριξης και προσαρμογών, κ.α.. Σήμερα, το Linux είναι έτοιμο να δεχθεί την πρόκληση ενός γρήγορα μεταβαλλόμενου κόσμου.


1.3.2. Εμπειρία δέκα ετών στην υπηρεσία σας

Ενώ το Linux είναι πιθανόν η πιο γνωστή πρωτοβουλία για το Λογισμικό Ανοικτού Κώδικα, υπάρχει ένα άλλο έργο το οποίο συνέβαλλε τεράστια στη δημοτικότητα του λειτουργικού συστήματος Linux. Το σχέδιο αυτό ονομάζεται SAMBA, και το επίτευγμα του είναι η αντίστροφη κατασκευή του Server Message Block (SMB)/Common Internet File System (CIFS) πρωτοκόλλου που χρησιμοποιούνταν για την εξυπηρέτηση αρχείων και εκτυπώσεων σε PCs που υποστηρίζουν MS Windows NT το OS/2, και το Linux. Τα πακέτα είναι τώρα διαθέσιμα σε κάθε σχεδόν σύστημα και παρέχουν λύσεις διασύνδεσης σε ανάμικτα περιβάλλοντα που χρησιμοποιούν πρωτόκολλα MS Windows: και διακομιστές αρχείων και εκτυπώσεων συμβατούς με Windows (μέχρι και τα WinXP).

Ίσως ακόμα πιο επιτυχημένο από το έργο SAMBA είναι το έργο του διακομιστή HTTP Apache. Ο διακομιστής εκτελείται σε UNIX, Windows NT και πολλά άλλα λειτουργικά συστήματα. Γνωστό αρχικά ως "A PAtCHy server", επειδή είναι βασισμένο σε υπάρχοντα κώδικα και σε μια σειρά από "patch files", το όνομα του ώριμου κώδικα δικαιούται να συσχετίζεται με την εγχώρια αμερικανική φυλή των Απάτσι, διάσημοι για τις ανώτερες τους ικανότητες στην πολεμική στρατηγική και την ανεξάντλητη αντοχή τους. Το Apache έχει δείξει ότι είναι ουσιαστικά ταχύτερο, πιο σταθερό και με πιο ολοκληρωμένα χαρακτηριστικά από πολλούς άλλους διακομιστές ιστού. Το Apache υποστηρίζει ιστοτόπους που δέχονται εκατομμύρια επισκέπτες κάθε μέρα, και ενώ δεν παρέχεται καμία επίσημη υποστήριξη από αυτούς που έχει αναπτυχθεί, η κοινότητα χρηστών Apache παρέχει απαντήσεις σε όλες σας τις ερωτήσεις. Η εμπορική υποστήριξη παρέχεται σήμερα από έναν τρίτων εταιρίες.

Στην κατηγορία των εφαρμογών γραφείου, είναι διαθέσιμη μια επιλογή από κλώνους του MS Office, με εύρος από μερικές μέχρι πλήρεις υλοποιήσεις των διαθέσιμων εφαρμογών σε σταθμούς εργασίας MS Windows. Αυτές οι πρωτοβουλίες βοήθησαν πολύ να γίνει το Linux αποδεκτό στην αγορά υπολογιστών γραφείου, επειδή οι χρήστες δεν χρειάζονται επιπλέον εκπαίδευση να μάθουν πως να δουλεύουν με το νέο τους σύστημα. Με τους υπολογιστές γραφείου έρχονται τα εγκώμια από τους συνήθεις χρήστες τους, και όχι μόνο τα εγκώμια, αλλά και οι συγκεκριμένες απαιτήσεις τους, οι οποίες γίνονται πιο περίπλοκες και απαιτητικές μέρα με τη μέρα.

Η κοινότητα του Ανοικτού Κώδικα, η οποία περιέχει πολλούς ανθρώπους που συνεισφέρουν για σχεδόν δέκα χρόνια, διασφαλίζει τη θέση του Linux' ως έναν σημαντικό ανταγωνιστή στην αγορά υπολογιστών όπως και γενικά στις εφαρμογές πληροφορικής. Μισθωτοί υπάλληλοι και εθελοντές δουλεύουν επιμελώς έτσι ώστε το Linux να μπορεί να διατηρήσει μια θέση στην αγορά. Όσο περισσότεροι είναι οι χρήστες, τόσο περισσότερες είναι οι ερωτήσεις. Η κοινότητα του Ανοικτού Κώδικα διασφαλίζει ότι απαντήσεις θα συνεχίσουν να φτάνουν, και παρατηρεί την ποιότητα των απαντήσεων με καχύποπτο μάτι, καταλήγοντας σε ακόμα περισσότερη σταθερότητα και προσβασιμότητα.

Η απαρίθμηση όλου του διαθέσιμου λογισμικού σε Linux είναι πέρα από την πρόθεση αυτού του οδηγού, εφόσον υπάρχουν δεκάδες χιλιάδες πακέτα. Κατά τη διάρκεια αυτής της σειράς μαθημάτων θα σας παρουσιάσουμε τα πιο συνηθισμένα πακέτα, τα οποία είναι σχεδόν όλα διαθέσιμα δωρεάν. Για να αφαιρέσουμε κάποιο από το φόβο του αρχάριου χρήστη, υπάρχει εδώ μια εικόνα από ένα από τα πιο δημοφιλή προγράμματα. Μπορείτε και μόνοι σας να δείτε ότι καταβλήθηκε κάθε προσπάθεια ώστε οι χρήστες που προέρχονται από τα Windows να νιώσουν άνετα.

Εικόνα 1-1. Λογιστικό φύλλο του OpenOffice

Περισσότερα για το OpenOffice.


1.4. Ιδιότητες του Linux

1.4.1. Τα υπέρ του Linux

Πολλά από τα πλεονεκτήματα του Linux αποτελούν συνέπεια της προέλευσης του, που είναι βαθιά ριζωμένη στο UNIX, εκτός από το πρώτο πλεονέκτημα, φυσικά:


1.4.2. Τα κατά του Linux


1.5. Εκδόσεις του Linux

1.5.1. Linux και GNU

Παρόλο που υπάρχει μεγάλος αριθμός υλοποιήσεων Linux, θα βρείτε πολλές ομοιότητες σε διαφορετικές διανομές, επειδή κάθε μηχάνημα Linux είναι ένα κτίσμα με οικοδομικούς λίθους τα οποία μπορείτε να ενώσετε ακολουθώντας τις ανάγκες και την κρίση σας. Η εγκατάσταση του συστήματος είναι μόνο η αρχή μιας μακρόχρονης σχέσης. Ακριβώς όταν νομίσετε ότι έχετε ένα ωραίο λειτουργικό σύστημα, το Linux θα διεγείρει τη φαντασία και τη δημιουργικότητα σας, και όσο περισσότερο αντιλαμβάνεστε τη δύναμη που μπορεί να σας δώσει το σύστημα, τόσο περισσότερο θα προσπαθήσετε να επαναπροσδιορίσετε τα όρια του.

Το Linux μπορεί να φαίνεται διαφορετικό ανάλογα με τη διανομή, το υλικό και το προσωπικό σας γούστο, αλλά οι βασικές αρχές στις οποίες χτίζονται όλες οι γραφικές και οι άλλες διασυνδέσεις, παραμένουν οι ίδιες. Το σύστημα Linux βασίζεται στα GNU εργαλεία (το Gnu Δεν είναι UNIX), που παρέχουν ένα σύνολο από καθορισμένους τρόπους χειρισμού και χρήσης του συστήματος. Όλα τα εργαλεία GNU είναι Ανοιχτού Κώδικα, οπότε μπορούν να εγκατασταθούν σε κάθε σύστημα. Οι περισσότερες διανομές προσφέρουν προ-μεταγλωττισμένα πακέτα από τα πιο συχνά εργαλεία, όπως πακέτα RPM σε RedHat και πακέτα Debian (αποκαλούμενα επίσης deb ή dpkg) σε Debian, οπότε δεν χρειάζεται να είστε προγραμματιστές για να εγκαταστήσετε ένα πακέτο στο σύστημα σας. Παρόλαυτα, αν κάνετε και σας αρέσει να κάνετε πράγματα μόνοι σας, θα απολαύσετε το Linux ακόμα περισσότερο, εφόσον οι περισσότερες διανομές περιέχουν ένα πλήρες σετ από εργαλεία ανάπτυξης, επιτρέποντας την εγκατάσταση νέου λογισμικού καθαρά από τον πηγαίο κώδικα. Το στήσιμο αυτό σας επιτρέπει επίσης να εγκαταστήσετε λογισμικό ακόμα και αν δεν υπάρχει σε προ-πακεταρισμένη μορφή κατάλληλη για το σύστημα σας.

Μία λίστα συνηθισμένου GNU λογισμικού:

Πολλές εμπορικές εφαρμογές είναι διαθέσιμες για Linux, και για περισσότερες πληροφορίες σχετικά με αυτά τα πακέτα αναφερόμαστε στην ειδική τους τεκμηρίωση. Σε αυτό τον οδηγό θα συζητήσουμε μόνο για δωρεάν διαθέσιμο λογισμικό, το οποίο υπάρχει (στις περισσότερες περιπτώσεις) με αδειοδότηση GNU.

Για να εγκαταστήσετε παραλειπόμενα ή νέα πακέτα, θα χρειαστείτε κάποιο τύπο διαχείρισης λογισμικού. Οι πιο κοινές υλοποιήσεις περιλαμβάνουν τα RPM και dpkg. Το RPM είναι ο διαχειριστής πακέτων του RedHat (RedHat Package Manager), που χρησιμοποιείται σε πληθώρα συστημάτων Linux, ακόμα και αν το όνομα του δεν το υποδηλώνει αυτό. Το Dpkg είναι το σύστημα διαχείρισης πακέτων του Debian, το οποίο χρησιμοποιεί μια διασύνδεση που ονομάζεται apt-get, η οποία μπορεί επίσης να διαχειριστεί και τα πακέτα RPM. Το Novell Ximian Red Carpet είναι μια έμμεσα συσχετιζόμενη υλοποίηση του RPM με γραφικό front-end. Άλλοι πωλητές σχετικού λογισμικού μπορεί να έχουν τις δικές τους διαδικασίες εγκατάστασης, που μερικές φορές παρομοιάζονται με το InstallShield και άλλα, όπως είναι γνωστό για το MS Windows και άλλες πλατφόρμες (πχ ο Synaptic Package Manager του Ubuntu, ΣτΜ). Όσο προχωράτε με το Linux, πιθανόν θα έρθετε σε επαφή με ένα ή περισσότερα από αυτά τα προγράμματα.


1.5.2. GNU/Linux

Ο πυρήνας Linux (ο σκελετός του συστήματος σας, δείτε την Ενότητα 3.2.3.1) δεν είναι τμήμα του σχεδίου GNU αλλά χρησιμοποιεί την ίδια αδειοδότηση με το GNU λογισμικό. Μία πληθώρα βοηθημάτων και εργαλείων ανάπτυξης (η σάρκα του συστήματος σας), τα οποία δεν είναι ειδικευμένα για το Linux, έχουν ληφθεί από το σχέδιο GNU. Επειδή κάθε χρησιμοποιήσιμο σύστημα πρέπει να περιέχει τόσο τον πυρήνα όσο και ένα ελάχιστο σετ από βοηθήματα, μερικοί υποστηρίζουν ότι ένα τέτοιο σύστημα πρέπει να αποκαλείται GNU/Linux σύστημα.

Για να διατηρηθεί ο μεγαλύτερος δυνατός βαθμός ανεξαρτησίας μεταξύ των διανομών, αυτό θα είναι το είδος του Linux που θα συζητήσουμε σ' αυτήν την σειρά μαθημάτων. Εάν δεν μιλάμε για ένα γενικό GNU/Linux σύστημα, τότε θα αναφέρεται το όνομα της συγκεκριμένης διανομής, έκδοσης ή προγράμματος.


1.5.3. Ποιά διανομή να εγκαταστήσω;

Πριν την εγκατάσταση, ο σημαντικότερος παράγοντας είναι το υλικό σας. Εφόσον κάθε διανομή Linux περιέχει τα βασικά πακέτα και και μπορεί να διαμορφωθεί για να ανταποκρίνεται σε όλες τις απαιτήσεις (επειδή όλες χρησιμοποιούν τον πυρήνα Linux), χρειάζεται μόνο να σκεφτείτε αν η διανομή θα εκτελεστεί στο υλικό σας. Το LinuxPPC για παράδειγμα έχει δημιουργηθεί για να εκτελείται σε MacIntosh και άλλα PowerPCs και δεν εκτελείται σε ένα συνηθισμένο x86 PC. Το LinuxPPC εκτελείται στο νέο Mac, αλλά δεν μπορείτε να το χρησιμοποιήσετε σε κάποιο από τα παλαιότερα με την πολύ παλιά τεχνολογία διαύλου. Μια ακόμα περίπλοκη περίπτωση είναι το υλικό της Sun, το οποίο θα μπορούσε να είναι μια παλιά SPARC CPU ή μια νεότερη UltraSparc, όπου και οι δύο απαιτούν διαφορετικές εκδόσεις του Linux.

Σύμφωνα με τη Wikipedia (http://en.wikipedia.org/wiki/Linux_distributions), σήμερα έχουν καταγραφεί περισσότερες από 300 διανομές Linux, οι οποίες είναι στην πλειοψηφία τους ενεργές (βρίσκονται υπό ανάπτυξη). Κάποιες διανομές Linux είναι βελτιστοποιημένες για συγκεκριμένους επεξεργαστές, όπως οι Athlon CPU, ενώ ταυτόχρονα θα τρέχουν αρκετά ευπρεπώς σε κλασικούς 486, 586 και 686 επεξεργαστές Intel. Μερικές φορές διανομές για ειδικές CPU δεν είναι τόσο αξιόπιστες, εφόσον έχουν εξεταστεί από λιγότερα άτομα.

Οι περισσότερες διανομές Linux προσφέρουν ένα σύνολο προγραμμάτων για γενικής χρήσης PC με ειδικά πακέτα που περιέχουν βελτιστοποιημένους πυρήνες για τις x86 Intel CPU. Οι διανομές αυτές είναι πολύ καλά δοκιμασμένες και συντηρούμενες σε τακτική βάση, ενώ εστιάζονται σε αξιόπιστες υλοποιήσεις διακομιστών και εύκολη εγκατάσταση και διαδικασίες αναβάθμισης. Παραδείγματα είναι τα Debian, Ubuntu, Fedora, SuSE, Mandriva (και Ubuntu ΣτΜ) τα οποία είναι μακράν τα πιο δημοφιλή συστήματα Linux και θεωρούνται γενικά εύκολα στη χρήση για τους αρχάριους χρήστες, χωρίς να εμποδίζουν τους επαγγελματίες να πάρουν τη μέγιστη απόδοση από τις Linux μηχανές τους. Το Linux τρέχει επίσης ευπρεπώς σε φορητούς και διακομιστές. Οι οδηγοί για νέο υλικό περιλαμβάνονται μόνο μετά από εκτεταμένες δοκιμές, το οποίο συμβάλλει στη σταθερότητα του συστήματος.

Ενώ η πρότυπη επιφάνεια εργασίας μπορεί να είναι Gnome σε ένα σύστημα, ένα άλλο μπορεί να προσφέρει KDE προεπιλεγμένα. Γενικά, τόσο το Gnome όσο και το KDE είναι διαθέσιμα για όλες τις σημαντικές διανομές Linux. Άλλοι διαχειριστές παραθύρων και επιφάνειας εργασίας είναι διαθέσιμοι για πιο προχωρημένους χρήστες.

Η πρότυπη διαδικασία εγκατάστασης επιτρέπει στους χρήστες να επιλέξουν μεταξύ διαφορετικών βασικών συστημάτων, όπως ένας σταθμός εργασίας, όπου όλα τα πακέτα που χρειάζονται για καθημερινή χρήση και ανάπτυξη είναι εγκατεστημένα, ή μια εγκατάσταση server, όπου μπορούν να επιλεγούν διαφορετικές υπηρεσίες δικτύου. Οι έμπειροι χρήστες μπορούν να εγκαταστήσουν όποιον συνδυασμό πακέτων θέλουν κατά τη διάρκεια της αρχικής διαδικασίας εγκατάστασης.

Ο στόχος του οδηγού αυτού είναι να εφαρμόζεται σε όλες τις διανομές Linux. Ωστόσο, για τη δική σας διευκόλυνση, προτείνεται ανεπιφύλακτα στους πρωτάρηδες να εμμείνουν σε μια κύρια διανομή, που υποστηρίζει προεπιλεγμένα όλο το συνηθισμένο υλικό και τις εφαρμογές. Η λίστα που ακολουθεί περιλαμβάνει κάποιες δημοφιλείς διανομές Linux:

ISO-εικόνες που μπορούν να φορτωθούν από το Ίντερνετ μπορούν να ληφθούν από το LinuxISO.org. Οι κύριες διανομές μπορούν να αποκτηθούν από κάθε αξιπρεπές κατάστημα υπολογιστών.

Μπορείτε να επισκεφθείτε την σελίδα distrowatch.com, και να δείτε ειδήσεις, την ταξινόμηση δημοτικότητας, και άλλες γενικές πληροφορίες για τις διάφορες διανομές Linux.

1.6. Περίληψη

Σε αυτό το κεφάλαιο, ότι:


1.7. Ασκήσεις

Μια πρακτική άσκηση για αρχάριους: εγκαταστήστε το Linux στο PC σας. Διαβάστε το εγχειρίδιο εγκατάστασης για τη διανομή σας και/ή το Installation HOWTO και κάντε το:





Note

Διαβάστε τη τεκμηρίωση!

 

Τα περισσότερα λάθη προέρχονται από τη μη ανάγνωση των πληροφοριών που παρέχονται κατά τη διάρκεια της εγκατάστασης. Η προσεκτική ανάγνωση των μηνυμάτων εγκατάστασης είναι το πρώτο βήμα στο δρόμο της επιτυχίας.

Πράγματα που πρέπει να γνωρίζετε ΠΡΙΝ ξεκινήσετε την εγκατάσταση του Linux:

Είναι αυτός ο υπολογιστής στο δίκτυο? Ποιο είναι το όνομα του διακομιστή του, η διεύθυνση IP? Υπάρχουν καθόλου gateway servers ή άλλες σημαντικές μηχανές στο διαδίκτυο που το κουτί μου θα πρέπει να επικοινωνεί?

Caution

Το Linux περιμένει να δικτυωθεί.

 

Η μη χρήση Διαδικτύου ή η λάθος διαμόρφωσή του μπορεί να προκαλεί καθυστέρηση στην εκκίνηση.

Η πλήρης λίστα μπορεί να βρεθεί στο http://www.tldp.org/HOWTO/Installation-HOWTO/index.html.

Στα επόμενα κεφάλαια θα ανακαλύψουμε εάν η εγκατάσταση ήταν επιτυχής.


Κεφάλαιο 2. Γρήγορη εκκίνηση

Για να αποκομίσετε τα μέγιστα από αυτό τον οδηγό, ξεκινούμε αμέσως με ένα πρακτικό κεφάλαιο σχετικό με τη σύνδεση σε ένα σύστημα Linux και την εκτέλεση μερικών βασικών δραστηριοτήτων.

Θα συζητήσουμε τα παρακάτω:


2.1. Σύνδεση, ενεργοποίηση διεπαφής χρήστη, αποσύνδεση

2.1.1. Εισαγωγή

Για να δουλέψετε σε ένα σύστημα Linux αμέσως, θα χρειαστεί να ορίσετε ένα όνομα χρήστη (login name) και ένα συνθηματικό (password). Πάντα πρέπει να πιστοποιείτε την ταυτότητά σας στο σύστημα. Οι περισσότεροι υπολογιστές που είναι βασισμένοι σε συστήματα Linux έχουν δύο βασικές επιλογές διεπαφής χρήστη, μια γρήγορη και λιτή  στη μορφή κειμένου σε γραμμή εντολών (κονσόλα) -που μοιάζει σαν DOS με ποντίκι, με χαρακτηριστικά πολυδιεργασίας και πολυχρησίας- και μια γραφική, που φαίνεται καλύτερη αλλά δαπανά περισσότερους πόρους του συστήματος.


2.1.2. Γραφική διεπαφή

Στις μέρες μας αυτή είναι η προεπιλογή στους περισσότερους υπολογιστές. Γνωρίζετε ότι θα συνδεθείτε στο σύστημα χρησιμοποιώντας γραφική μορφή όταν πρώτα το σύστημα σας ζητά το όνομα χρήστη, και μετά, πιθανώς σε ένα καινούργιο παράθυρο, να πληκτρολογήσετε τον συνθηματικό σας.

Για να συνδεθείτε, βεβαιωθείτε ότι ο δείκτης του ποντικιού βρίσκεται μέσα στο παράθυρο εισόδου, δώστε το όνομα χρήστη και τον συνθηματικό σας στο σύστημα και κάντε κλικ στο OK ή πατήστε Enter.

Προσοχή με το λογαριασμό (υπερ-χρήστη) root !

Γενικά θεωρείται κακή ιδέα να συνδέεστε (γραφικά) χρησιμοποιώντας  το όνομα υπερ-χρήστη (ή διαχειριστή) root, δηλαδή το λογαριασμό του διαχειριστή συστήματος, αφού η γραφική διεπαφή περιλαμβάνει την εκτέλεση πολλών επιπλέον προγραμμάτων, και στην περίπτωση του υπερ-χρήστη με πολλά επιπλέον δικαιώματα. Για να μειώσετε τους κινδύνους όσο το δυνατόν, χρησιμοποιήστε έναν κανονικό λογαριασμό χρήστη για να συνδεθείτε γραφικά. Αλλά υπάρχουν αρκετοί κίνδυνοι, γι’ αυτό να κρατήσετε στο μυαλό σας σαν γενική συμβουλή, να χρησιμοποιείται το λογαριασμό υπερ-χρήστη μόνο όταν απαιτούνται επιπλέον προνόμια.

Αφού εισάγετε τον συνδυασμό ονόματος/συνθηματικού σας, μπορεί να πάρει λίγο χρόνο πριν το γραφικό περιβάλλον ξεκινήσει, εξαρτάται από την ταχύτητα της CPU του υπολογιστή σας, το λογισμικό που χρησιμοποιείτε και τις προσωπικές σας ρυθμίσεις.

Για να συνεχίσετε θα χρειαστεί να ανοίξετε ένα παράθυρο τερματικού, terminal window ή xterm για συντομία (X είναι το όνομα του λογισμικού που υποστηρίζει το γραφικό περιβάλλον). Το πρόγραμμα βρίσκεται στη θέση Εφαρμογές->Βοηθήματα->Τερματικό (σε linux Ubuntu) ή και κάπου αλλού, εξαρτάται και από το διαχειριστή παραθύρων που χρησιμοποιείται. Μπορεί να υπάρχουν εικονίδια τα οποία μπορείτε να χρησιμοποιήσετε σαν συντόμευση για να ανοίξετε ένα τερματικό εξίσου καλά, και κάνοντας δεξί κλικ στην επιφάνεια εργασίας συνήθως εμφανίζεται ένα μενού που μπορεί να περιέχει και την εκκίνηση παραθύρου τερματικού.

Καθώς περιηγείστε στα μενού, θα παρατηρήσετε πως πολλά πράγματα μπορούν να γίνουν χωρίς να εισάγετε εντολές από το πληκτρολόγιο. Για τους περισσότερους χρήστες, η παλιά καλή μέθοδος επικοινωνίας με point-n-click  ισχύει, αλλά αυτός ο οδηγός απευθύνεται σε μελλοντικούς διαχειριστές συστημάτων και δικτύων, οι οποίοι θα χρειάζεται να επεμβαίνουν στην «καρδιά» του συστήματος. Χρειάζονται ένα πιο ισχυρό εργαλείο από ένα ποντίκι για να χειρίζονται όλες τις δυσκολίες που θα αντιμετωπίσουν. Αυτό το εργαλείο είναι το κέλυφος, και όταν βρισκόμαστε σε γραφική μορφή, ενεργοποιούμε το κέλυφός μας ανοίγοντας ένα τερματικό.

Το κέλυφος εντολών αποτελεί επίσης μια διεπαφή προς τους χρήστες του υπολογιστή (όπως και το περιβάλλον επιφάνειας εργασίας), η οποία ωστόσο δεν περιλαμβάνει γραφικά. Ο χρήστης αλληλεπιδρά με το σύστημα πληκτρολογώντας εντολές των οποίων τη σύνταξη πρέπει να γνωρίζει ή να είναι σε θέση να την εντοπίσει στο σύστημα βοήθειας. Κάθε κέλυφος εντολών χαρακτηρίζεται από το σύνολο των εντολών και των λοιπών δυνατοτήτων σύνταξης που παρέχει στους χρήστες και για το λόγο αυτό υπάρχουν διαφορετικών είδη shells.

Το τερματικό είναι ο πίνακας ελέγχου σας για το σύστημα. Στο παράθυρο που εμφανίζεται μπορείτε να πληκτρολογείτε τις εντολές και να λαμβάνετε την απόκριση από το σύστημα. Η ένδειξη ubuntu@ubuntu:~$ αποτελεί το προτρεπτικό σήμα (prompt) του κελύφους εντολών και εξηγείται ως εξής:

[όνομα_χρήστη]@[όνομα_υπολογιστή]:[τρέχων κατάλογος][σύμβολο_προτροπής]

Εικόνα 2-1. Παράθυρο τερματικού

Μια άλλη κοινή μορφή προτροπής είναι η:

[user@host dir]

Στο παραπάνω παράδειγμα, user θα είναι το όνομα χρήστη, host το όνομα του υπολογιστή στο οποίο εργάζεστε , και dir μια ένδειξη για την τρέχουσα θέση σας στο σύστημα.

Αργότερα θα συζητήσουμε τις προτροπές και τη συμπεριφορά τους με λεπτομέρειες. Προς το παρόν, φτάνει να γνωρίζουμε ότι οι προτροπές μπορούν να εμφανίσουν όλα τα είδη πληροφορίας, πλην εκείνων που δεν είναι μέρος εντολών που δίνεται στο σύστημα.

Για να αποσυνδεθείτε από το σύστημα στην γραφική μορφή, χρειάζεται να κλείσετε όλα τα τερματικά και άλλες εφαρμογές. Κατόπιν πατήστε το κουμπί της εξόδου ή βρείτε την Αποσύνδεση στο μενού. Στην πραγματικότητα δεν είναι απαραίτητο να κλείσετε τα πάντα, μπορεί και το σύστημα να το κάνει αυτό για εσάς, αλλά η διαχείριση συνόδου πρέπει να βάλει όλες τις τρέχουσες εφαρμογές πίσω στην οθόνη μόλις συνδεθείτε ξανά, το οποίο παίρνει περισσότερο χρόνο και δεν έχει πάντα το επιθυμητό αποτέλεσμα. Ωστόσο, αυτή η συμπεριφορά είναι διαμορφώσιμη.

Αν δείτε την οθόνη εισόδου ξανά, ζητώντας σας να εισάγετε πάλι όνομα χρήστη και συνθηματικό, η αποσύνδεση έγινε με επιτυχία.

Note

Gnome ή KDE;

 

Αναφέραμε τις δύο επιφάνειες εργασίας, Gnome και KDE, ήδη μια-δυο φορές. Αυτοί είναι οι δύο πιο δημοφιλείς τρόποι διαχείρισης της επιφάνειας εργασίας του υπολογιστή σας, αν και υπάρχουν πολλοί, πολλοί άλλοι. Με οποιοδήποτε διαχειριστή και αν επιλέξετε να εργαστείτε είναι το ίδιο – εφόσον γνωρίζετε πώς να ανοίξετε ένα παράθυρο τερματικού. Ωστόσο, θα συνεχίσουμε να αναφερόμαστε στα Gnome και KDE ως τις πιο δημοφιλείς μεθόδους για την εκτέλεση συγκεκριμένων εργασιών.


2.1.3. Διεπαφή κειμένου

Γνωρίζετε ότι βρίσκεστε σε κατάσταση διεπαφής κειμένου όταν ολόκληρη η οθόνη είναι μαύρη, εμφανίζοντας (τις περισσότερες φορές λευκούς) χαρακτήρες. Μια οθόνη εισόδου σε μορφή κειμένου τυπικά εμφανίζει μερικές πληροφορίες για το μηχάνημα στο οποίο εργάζεστε, το όνομά του και μια προτροπή η οποία περιμένει από εσάς να συνδεθείτε:

RedHat Linux Release 8.0 (Psyche)

blast login: _




      

Η σύνδεση είναι διαφορετική από την είσοδο σε γραφική μορφή, εδώ πρέπει να πατήσετε Enter αφού πρώτα δώσετε το όνομα χρήστη, επειδή δεν υπάρχουν κουμπιά στην οθόνη τα οποία μπορείς να κάνεις κλικ με το ποντίκι. Εν συνεχεία πρέπει να πληκτρολογήσετε το συνθηματικό σας, ακολουθούμενο από ένα ακόμα Enter. Δεν πρόκειται να δείτε κάποια ένδειξη ότι έχετε εισάγει κάτι, ούτε καν έναν αστερίσκο, και δεν θα δείτε τον δρομέα να κινείται. Αλλά αυτό είναι λογικό στο Linux και γίνεται για λόγους ασφαλείας.

Όταν το σύστημα σας δεχτεί ως έγκυρο χρήστη μπορείτε να πάρετε κάποιες πληροφορίες , το αποκαλούμενο μήνυμα της ημέρας, το οποίο μπορεί να είναι οτιδήποτε. Επιπλέον, είναι δημοφιλές στα συστήματα UNIX να εμφανίζεται ένα 'μπισκοτάκι της τύχης', το οποίο περιέχει κάποιες γενικές λογικές ή παράλογες (αυτό εξαρτάται από εσάς) ιδέες. Κατόπιν θα σας δοθεί ένα κέλυφος, υποδεικνύοντας την ίδια προτροπή που θα είχατε στο παράθυρο τερματικού σε γραφική μορφή.

Μην συνδέεστε σαν υπερ-χρήστης (root)

Επίσης και στη διεπαφή κειμένου: μπείτε σαν υπερ-χρήστης μόνο για να κάνετε εγκαταστάσεις και διαμόρφωση του συστήματος που απαιτούν αυστηρά προνόμια διαχειριστή, όπως είναι η προσθήκη χρηστών, εγκατάσταση πακέτων λογισμικού, και διαμόρφωση δικτύου ή συστήματος. Μόλις τελειώσετε, εγκαταλείψετε αμέσως τον ειδικό αυτό λογαριασμό και συνεχίστε την εργασία σας ως μη προνομιούχος χρήστης. Εναλλακτικά, μερικά συστήματα, όπως το Ubuntu, σας υποχρεώνουν να χρησιμοποιήσετε sudo, έτσι ώστε να μη χρειάζεται απευθείας πρόσβαση στον λογαριασμό υπερ-χρήστη.

Η αποσύνδεση γίνεται εισάγοντας την εντολή logout, ακολουθούμενη από Enter. Έχετε αποσυνδεθεί επιτυχώς από το σύστημα όταν δείτε την οθόνη εισόδου ξανά.

Caution

Ο διακόπτης παροχής ρεύματος

 

Αν και το Linux δε σχεδιάστηκε να σταματά την λειτουργία του χωρίς εφαρμογή των κατάλληλων διαδικασιών τερματισμού, το πάτημα του διακόπτη ρεύματος ισοδυναμεί με την εκκίνηση αυτών των διαδικασιών σε πιο καινούργια συστήματα. Ωστόσο το κλείσιμο ενός παλιού συστήματος χωρίς να γίνει αυτή η διαδικασία μπορεί να προκαλέσει σοβαρή ζημιά! Αν θέλετε να είστε σίγουροι, χρησιμοποιήστε πάντα την επιλογή απενεργοποίηση όταν αποσυνδέεστε από τη γραφική διασύνδεση, ή, όταν είστε στην οθόνη εισόδου (όπου πρέπει να δώσετε το όνομα χρήστη και τον συνθηματικό) ψάξτε για το κουμπί τερματισμού.

Τώρα που γνωρίζουμε πώς να συνδεθούμε και να αποσυνδεθούμε, είμαστε έτοιμοι για τις πρώτες μας εντολές.


2.2. Τα απολύτως βασικά

2.2.1. Οι εντολές

Αυτές είναι οι γρήγορες και εύκολες, τις οποίες χρειαζόμαστε για να ξεκινήσουμε. Θα τις συζητήσουμε στη συνέχεια με περισσότερες λεπτομέρειες.

Πίνακας 2-1. Εντολές γρήγορης εκκίνησης

Εντολή

Σημασία

ls

Εμφανίζει μια λίστα αρχείων στον τρέχοντα κατάλογο εργασίας, όπως η εντολή dir στο DOS

cd directory

Αλλάζει καταλόγους

passwd

Αλλάζει το συνθηματικό του τρέχοντα χρήστη

file filename

Εμφανίζει τον τύπο του αρχείου με όνομα filename

cat textfile

Εμφανίζει τα περιεχόμενα του textfile στην οθόνη

pwd

Εμφανίζει τον τρέχοντα κατάλογο εργασίας

exit or logout

Αποσύνδεση

man command

Διαβάζει τις σελίδες του  man για την  command

info command

Διαβάζει τις σελίδες του Info για την command

apropos string

Ψάχνει τη βάση δεδομένων whatis για αλφαριθμητικά string

Η εντολή ls

Όπως αναφέρθηκε και παραπάνω, η εντολή ls εμφανίζει τα περιεχόμενα (αρχεία και καταλόγους) του τρέχοντος καταλόγου. Στη βασική της σύνταξη δεν απαιτεί ορίσματα (το όρισμα μιας εντολής είναι εξειδίκευση του αντικειμένου που θέλετε εκτελέσει η εντολή). Για παράδειγμα, αν εκτελέσετε την εντολή ls μόλις ανοίξετε το τερματικό θα εμφανίσετε τα περιεχόμενα του αρχικού καταλόγου (home directory):

Εάν τρέξετε την ίδια εντολή με την επιλογή (switch) -l, τα περιεχόμενα του καταλόγου εμφανίζονται σε μια λίστα:

Σε αυτή την προβολή εμφανίζονται περισσότερες πληροφορίες όπως ο τύπος κάθε στοιχείου (αρχείο ή κατάλογος), τα δικαιώματα πρόσβασης σε αυτό που έχουν οι χρήστες του συστήματος, κ.α.

Η εντολή ls δεν εμφανίζει τα κρυφά αρχεία και φακέλους. Για να εμφανιστούν τα κρυφά στοιχεία, θα πρέπει να προσθέσετε την επιλογή -a. Επίσης, εάν θέλετε να εμφανίσετε τα περιεχόμενα ενός άλλου καταλόγου και όχι του τρέχοντα θα πρέπει να προσθέσετε και τη διαδρομή προς αυτόν τον κατάλογο στην εντολή. Για παράδειγμα, εάν επιθυμείτε να εμφανίσετε τα περιεχόμενα του καταλόγου /var σε μια λίστα η οποία θα περιλαμβάνει και τα κρυφά αρχεία/ καταλόγους θα πρέπει να πληκτρολογήσετε ls -la /var. Το αποτέλεσμα της εντολής φαίνεται στο στιγμιότυπο που ακολουθεί:

Η εντολή pwd

Η εντολή pwd δεν έχει ορίσματα και εμφανίζει τον τρέχοντα κατάλογο εργασίας. Για παράδειγμα, εάν εκτελέσετε την εντολή pwd μόλις ανοίξετε το τερματικό θα εμφανιστεί η διαδρομή προς τον αρχικό κατάλογο του χρήστη με τον οποίο έχετε συνδεθεί στο σύστημα.

Η εντολή cd

Η εντολή cd αλλάζει τον τρέχοντα κατάλογο εργασίας. Το βασικό (και απαραίτητο) όρισμά της είναι η διαδρομή προς τον κατάλογο στον οποίο θα γίνει μετάβαση. Για παράδειγμα, για να μεταβείτε στον κατάλογο /var/games θα πρέπει να πληκτρολογήσετε cd /var/games. Ιδιαίτερη προσοχή απαιτείται στο αν μια διαδρομή είναι απόλυτη ή σχετική. Για παράδειγμα, στην εντολή cd var/games, η διαδρομή (var/games) είναι σχετική, πράγμα που σημαίνει ότι η εντολή θα ψάξει για έναν κατάλογο var/games μέσα στον τρέχοντα. Αντίθετα, στην εντολή cd /var/games η διαδρομή είναι απόλυτη (ξεκινά με /) πράγμα που σημαίνει ότι θα αναζητήσει έναν κατάλογο var/games στη ρίζα του συστήματος αρχείων.

Για να μεταβείτε ένα επίπεδο πιο πάνω στο σύστημα αρχείων (δηλαδή στον κατάλογο που περιέχει τον τρέχοντα), θα πρέπει να πληκτρολογήσετε cd ..

Για παράδειγμα, εάν ο τρέχων κατάλογος είναι ο /home/ubuntu, η εντολή cd .. θα έχει ως αποτέλεσμα τη μετάβαση στον κατάλογο /home.

Ένας σύντομος τρόπος να μεταβείτε στον αρχικό σας κατάλογο είναι να πληκτρολογήσετε την εντολή cd ~

Η εντολή passwd

Η εντολή αυτή αλλάζει τον κωδικό πρόσβασης του τρέχοντα χρήστη. Αρχικά ζητά να πληκτρολογήσετε τον ισχύοντα κωδικό προκειμένου να πιστοποιήσετε την ταυτότητά σας και στη συνέχεια το νέο κωδικό (2 φορές για επιβεβαίωση).

Οι εντολές logout και exit

Η εντολή logout αποσυνδέει τον τρέχοντα χρήστη από το σύστημα (με την προϋπόθεση ότι ανοίγοντας το τερματικό είχε κάνει login) ενώ η εντολή exit κλείνει το παράθυρο του τερματικού ή τερματίζει τη σύνδεση (αν πρόκειται για σύνδεση σε απομακρυσμένο υπολογιστή).

Οι εντολές su και sudo

Η εντολή su αλλάζει τον τρέχοντα χρήστη σε αυτόν που της δίνεται ως όρισμα. Για παράδειγμα, η εκτέλεση της εντολής su root θα έχει ως αποτέλεσμα την αλλαγή του τρέχοντα χρήστη σε root, δηλαδή στον υπέρ-χρήστη (superuser) ο οποίος έχει πλήρη δικαιώματα διαχείρισης στον υπολογιστή. Φυσικά, για να γίνει η εναλλαγή σε κάποιον χρήστη θα χρειαστεί να πληκτρολογήσετε τον κωδικό πρόσβασης για τον αντίστοιχο χρήστη.

Η εντολή sudo σας επιτρέπει να εκτελέσετε μια εντολή με δικαιώματα ενός άλλου χρήστη. Εάν δεν πληκτρολογήσετε κάποιον χρήστη, η εντολή υποθέτει τον χρήστη root. Η βασική σύνταξη της εντολής έχει ως εξής:

sudo -u user command

sudo cat file1.txt

Θα εμφανίσει στην οθόνη τα περιεχόμενα του αρχείου file1.txt για το οποίο πιθανώς ο τρέχων χρήστης να μην είχε δικαίωμα ανάγνωσης (ενώ ο χρήστης root θα έχει σίγουρα).


2.2.2. Γενικές παρατηρήσεις

Πληκτρολογείτε αυτές τις εντολές μετά την προτροπή εντολής, σε ένα τερματικό είτε σε γραφική μορφή είτε σε μορφή κειμένου, ακολουθούμενες από Enter.

Οπώς ειδαμε και παραπάνω, οι εντολές μπορεί να εισάγονται μόνες τους, όπως η ls. Μια εντολή συμπεριφέρεται διαφορετικά όταν ορίζετε κάποια επιλογή, συνήθως προηγείται μια παύλα (-), όπως στην ls -a. Η ίδια επιλογή χαρακτήρα μπορεί να έχει διαφορετική σημασία σε άλλη εντολή. Τα προγράμματα GNU δέχονται μακροσκελέστερες επιλογές, προηγούμενες από δύο παύλες (--), όπως  ls --all. Μερικές εντολές δεν έχουν επιλογές.

Το όρισμα(ορίσματα) μιας εντολής είναι εξειδίκευση του αντικειμένου(αντικειμένων) που θέλετε εκτελέσει η εντολή. Ένα παράδειγμα είναι ls /etc, όπου ο κατάλογος /etc είναι ένα όρισμα της εντολής  ls. Αυτό δηλώνει ότι θέλετε να δείτε το περιεχόμενο αυτού του καταλόγου, αντί του προεπιλεγμένου, το οποίο θα είναι το περιεχόμενο του τρέχοντα καταλόγου, που θα το πετυχαίναμε απλά πληκτρολογώντας ls ακολουθούμενο από Enter. Μερικές εντολές απαιτούν ορίσματα, για άλλες είναι προαιρετικά.

Μπορείτε να ανακαλύψετε πότε μια εντολή δέχεται επιλογές και ορίσματα, και ποια είναι έγκυρα,  ελέγχοντας την online βοήθεια για την εντολή, δείτε Ενότητα 2.3.

Στο Linux, όπως και στα UNIX, οι κατάλογοι χωρίζονται χρησιμοποιώντας καθέτους(/), σαν αυτές που χρησιμοποιούμε στις ηλεκτρονικές διευθύνσεις (URLs). Θα συζητήσουμε τη δομή των καταλόγων σε βάθος αργότερα.

Τα σύμβολα . και .. έχουν ιδιαίτερη σημασία όταν αφορούν καταλόγους. Θα προσπαθήσουμε να τα ανακαλύψουμε αυτά κατά τη διάρκεια των ασκήσεων, και περισσότερα στο επόμενο κεφάλαιο.

Προσπαθήστε να αποφύγετε την σύνδεση ως υπερ-χρήστης ή διαχειριστής (root). Πέρα από την κανονική σας εργασία, τα περισσότερα καθήκοντα ελέγχου του συστήματος, συλλογής πληροφοριών κλπ., μπορεί να εκτελεστούν χρησιμοποιώντας έναν κανονικό λογαριασμό χρήστη χωρίς ιδιαίτερα προνόμια . Αν χρειαστεί, για παράδειγμα να δημιουργείτε έναν νέο χρήστη, ή εγκαταστήσετε νέο λογισμικό, η προτεινόμενη μέθοδος απόκτησης δικαιωμάτων υπερ-χρήστη είναι η αλλαγή ταυτότητας χρήστη (user ID), δείτε Ενότητα 3.2.1 για ένα παράδειγμα.

Σχεδόν όλες οι εντολές αυτού του βιβλίου μπορούν να εκτελεστούν χωρίς δικαιώματα διαχειριστή συστήματος. Στις περισσότερες περιπτώσεις, όταν θέτετε μια εντολή ή ξεκινάτε ένα πρόγραμμα ως ένας μη-προνομιούχος χρήστης, το σύστημα θα σας προειδοποιήσει ή θα σας εμφανίσει μια προτροπή για το συνθηματικό υπερ-χρήστη όταν απαιτείται. Αφού τελειώσετε, εγκαταλείψτε αμέσως αυτή την εφαρμογή ή ενότητα που σας δίνει δικαιώματα υπερ-χρήστη.

H ανάγνωση της τεκμηρίωσης πρέπει να γίνει η δεύτερη φύση σας. Ειδικά στην αρχή, είναι σημαντικό να διαβάζετε τη τεκμηρίωση του συστήματος, και τα εγχειρίδια για τις βασικές εντολές, τα HOWTOs κ.λ.π. Επειδή το μέγεθος της τεκμηρίωσης είναι τεράστιο, είναι αδύνατο να συμπεριλάβουμε όλο τη σχετική τεκμηρίωση. Αυτό το βιβλίο θα προσπαθήσει να σας καθοδηγήσει με τη καταλληλότερη τεκμηρίωση σε κάθε θέμα που συζητείται, με σκοπό να σας προκαλέσει την συνήθεια να διαβάζετε τις σελίδες του man.


2.2.3. Χρήση χαρακτηριστικών του Bash

Αρκετοί συνδυασμοί πλήκτρων σας επιτρέπουν να κάνετε πράγματα ευκολότερα και γρηγορότερα με το φλοιό Bash του GNU, που είναι το προκαθορισμένο σχεδόν σε κάθε σύστημα Linux, δείτε Ενότητα 3.2.3.2. Παρακάτω υπάρχει μια λίστα με τα χαρακτηριστικά που χρησιμοποιούνται συχνότερα, πρέπει οπωσδήποτε να σας γίνει συνήθεια η χρήση τους, έτσι ώστε να αποκομίσετε όσο το δυνατόν περισσότερα από την εμπειρία σας στο Linux από πολύ νωρίς.

Πίνακας 2-2. Συνδυασμοί πλήκτρων στο Bash

Πλήκτρο ή συνδυασμός

Λειτουργία

Ctrl+A ή Home

Μετακινεί τον δρομέα στην αρχή της γραμμής.

Ctrl+C

Τερματίζει ένα πρόγραμμα που εκτελείται και επιστρέφει στην προτροπή εντολής, δείτε Κεφάλαιο 4.

Ctrl+D

Εξέρχεται από την τρέχουσα σύνοδο του φλοιού, ίδιο με την πληκτρολόγηση exit ή logout.

Ctrl+E ή End

Μετακινεί τον δρομέα στο τέλος της γραμμής εντολών.

Ctrl+H ή Backspace

Δημιουργεί τον χαρακτήρα backspace.

Ctrl+L

Καθαρίζει το τερματικό.

Ctrl+R

Ψάχνει το ιστορικό εντολών, δείτε Ενότητα 3.3.3.4.

Ctrl+Z

Σταματά προσωρινά ένα πρόγραμμα, δείτε Κεφάλαιο 4.

ArrowLeft και ArrowRight

Μετακινεί τον δρομέα μια θέση στα αριστερά ή στα δεξιά στη γραμμή εντολής, έτσι ώστε να μπορείτε να εισάγειτε χαρακτήρες σε άλλες θέσεις όχι μόνο στην αρχή και το τέλος.

ArrowUp και ArrowDown

Ψάχνει στο ιστορικό. Πηγαίνετε στη γραμμή που σας ενδιαφέρει να επαναλάβετε, δώστε λεπτομέρειες αν είναι απαραίτητο, και πατήστε Enter για να γλιτώσετε χρόνο.

Shift+PageUp και Shift+PageDown

Ψάχνει τον απομονωτή τερματικού (για να δείτε το κείμενο που έχει "φύγει (σκρολάρει)" την οθόνη).

Tab

Συμπλήρωση εντολής ή ονόματος αρχείου; όταν είναι πιθανές πολλαπλές επιλογές, το σύστημα θα σας ειδοποιήσει με ένα ακουστικό ή οπτικό κουδούνισμα, ή, αν είναι τόσες πολλές πιθανές επιλογές, σας ρωτά αν επιθυμείτε να τις δείτε όλες.

Tab Tab

Εμφανίζει τις δυνατότητες τελειοποίησης αρχείου ή εντολής.

Τα δύο τελευταία αντικείμενα του παραπάνω πίνακα χρειάζονται κάποιες επιπλέον εξηγήσεις. Για παράδειγμα, αν θέλετε να αλλάξετε τον κατάλογο σε directory_with_a_very_long_name, δεν θα πληκτρολογήσετε αυτό το πολύ μεγάλο όνομα, όχι. Απλά πληκτρολογείστε στη γραμμή εντολών cd dir, μετά πατήστε Tab και το κέλυφος συμπληρώνει το όνομα για εσάς, αν δε υπάρχουν άλλα αρχεία με τους τρεις πρώτους χαρακτήρες ίδιους. Φυσικά, αν δεν υπάρχουν άλλα αντικείμενα που να αρχίζουν από "d", τότε μπορείτε εξίσου απλά να πληκτρολογήσετε cd d και μετα Tab. Αν παραπάνω από ένας φάκελοι ξεκινούν με τους ίδιους χαρακτήρες, το κέλυφος θα σας το δείξει, σύμφωνα με αυτά μπορείτε να πατήσετε Tab δύο φορές με μια μικρή παύση ανάμεσα, και το κέλυφος θα σας παρουσιάσει τις επιλογές που έχετε:

your_prompt> cd st
starthere        stuff          stuffit
      

Στο παραπάνω παράδειγμα, αν πληκτρολογήσετε "a" μετά τους δύο πρώτους χαρακτήρες και πατήσετε Tab ξανά, δεν έχουν μείνει άλλες επιλογές, και το κέλυφος  συμπληρώνει το όνομα καταλόγου, χωρίς να πρέπει να πληκτρολογήσετε το αλφαριθμητικό "rthere":

your_prompt> cd starthere
      

Φυσικά, πρέπει να πατήσετε Enter ώστε να δεχτεί αυτή την επιλογή.

Στο ίδιο παράδειγμα, αν πληκτρολογήσετε "u", και μετά πατήσετε Tab, το κέλυφος θα προσθέσει το "ff" για σας, αλλά μετά διαμαρτύρεται ξανά, γιατί είναι πιθανές πολλαπλές επιλογές. Αν πληκτρολογήσετε Tab Tab ξανά, θα δείτε τις επιλογές, αν πληκτρολογήσετε έναν ή περισσότερους χαρακτήρες κάνει την επιλογή ξεκάθαρη στο σύστημα , και Tab ξανά, ή Enter όταν έχετε φτάσει στο τέλος του ονόματος του αρχείου που θέλετε να επιλέξετε, ο φλοιός συμπληρώνει το όνομα αρχείου και το αλλάζει σε εκείνο τον κατάλογο – αν στην πραγματικότητα είναι ένα όνομα καταλόγου.

Αυτό λειτουργεί για όλα τα ονόματα αρχείων που είναι ορίσματα εντολών.

Το ίδιο συμβαίνει με την συμπλήρωση ονόματος της εντολής. Πληκτρολογώντας ls και μετά πατώντας Tab δύο φορές, καταγράφει σε μια λίστα όλες τις εντολές στο PATH σας (δείτε Ενότητα 3.2.1) που ξεκινούν με αυτούς τους δύο χαρακτήρες:

your_prompt> ls
ls           lsdev        lspci        lsraid       lsw
lsattr       lsmod        lspgpot      lss16toppm
lsb_release  lsof         lspnp        lsusb
      

2.3. Λήψη βοήθειας

2.3.1. Προειδοποίηση

Η ενασχόληση με το GNU/Linux πρέπει να σας κάνει πιο αυτάρκεις. Και όπως συνηθίζεται σε αυτό το σύστημα, υπάρχουν πολλοί τρόποι να επιτύχετε τον στόχο. Ένας κοινός τρόπος να πάρετε βοήθεια είναι να βρείτε κάποιον που γνωρίζει, αλλά όσο υπομονετική και φιλική και αν είναι η κοινότητα των χρηστών Linux, σχεδόν όλοι θα περιμένουν από εσάς να έχετε προσπαθήσει μία ή περισσότερες από τις μεθόδους που παρουσιάζονται σ’ αυτή την ενότητα πριν τους ρωτήσετε, και οι τρόποι με του οποίους εκφράζεται αυτή η άποψη μπορεί να είναι αρκετά σκληρή αν αποδείξετε ότι δεν ακολουθήσατε αυτόν τον βασικό κανόνα.


2.3.2. Οι σελίδες man

Πολλοί αρχάριοι χρήστες φοβούνται τις σελίδες του man (manual) , επειδή είναι μια υπερμεγέθης πηγή τεκμηρίωσης. Είναι, ωστόσο, πολύ δομημένες, όπως θα δείτε από το παράδειγμα: man man.

Η ανάγνωση των σελίδων man γίνεται συνήθως σε ένα παράθυρο τερματικού στη γραφική διεπαφή, ή απλά σε διεπαφή κειμένου αν το προτιμάτε. Η εντολή man συντάσσεται ως εξής:

man command

Έαν πληκτρολογήσουμε την εντολή man man, στην οθόνη μας θα εμφανιστεί η τεκμηρίωση  για το man.

man(1)                                                         man(1)
NAME
 man - format and display the on-line manual pages
 manpath - determine user's search path for man pages
SYNOPSIS
 man [-acdfFhkKtwW] [--path] [-m system] [-p string] [-C config_file]
 [-M pathlist] [-P pager] [-S section_list] [section] name ...
DESCRIPTION
 man formats and displays the on-line manual pages.  If you specify
 section, man only looks in that section of the manual.  
 name is normally the name of the manual page, which is typically the 
 name of a  command, function, or file.  However, if name contains a 
 slash (/) then man interprets it as a file specification, so that you
 can do man ./foo.5 or even man /cd/foo/bar.1.gz.
 See  below  for  a  description  of where man looks for the manual
 page files.
OPTIONS
 -C  config_file
lines 1-27

Προχωρήστε στην επόμενη σελίδα χρησιμοποιώντας τη μπάρα διαστήματος(space). Μπορείτε να πάτε στην προηγούμενη σελίδα χρησιμοποιώντας το πλήκτρο b. Όταν φτάσετε στο τέλος, το man συνήθως σταματά και γυρίζετε πίσω στην προτροπή. Πληκτρολογήστε  q αν επιθυμείτε να αφήσετε το man πριν φτάσετε στο τέλος, ή δεν σταματά αυτόματα η προβολή στο τέλος της σελίδας.

Σελιδοποιητές
Οι διαθέσιμοι συνδυασμοί πλήκτρων για να χειρίζεστε τις σελίδες του man εξαρτώνται από τον  σελιδοποιητή  που χρησιμοποιείται στη διανομή Linux που διαθέτετε. Οι περισσότερες διανομές χρησιμοποιούν το less για να προβάλουν τις σελίδες του man και να κινήσουν τον δείκτη κύλισης. Δείτε Ενότητα 3.3.4.2 για περισσότερες πληροφορίες για τους σελιδοποιητές.

Κάθε μιά σελίδα του man συνήθως περιέχει μερικές τυπικές παραγράφους, όπως μπορούμε να δούμε και από το παράδειγμα man man:

1 - Η πρώτη γραμμή περιλαμβάνει το όνομα της εντολής για την οποία διαβάζετε, και τη ταυτότητα  της παραγράφου στην οποία είναι τοποθετημένη η σελίδα του man. Οι σελίδες του  man χωρίζονται σε κεφάλαια. Είναι πολύ πιθανόν εντολές να έχουν πολλαπλές σελίδες, για παράδειγμα η σελίδα του man για την ενότητα χρήστη, η σελίδα του man από την ενότητα διαχείρισης συστήματος, και η σελίδα του man από την ενότητα προγραμματιστή.

2 - Δίνεται το όνομα της εντολής και μια μικρή περιγραφή, που χρησιμοποιούνται για να φτιαχτεί ένα ευρετήριο των σελίδων του man. Μπορείτε να ψάξετε για οποιοδήποτε δοσμένο αλφαριθμητικό αναζήτησης σ’ αυτό το ευρετήριο χρησιμοποιώντας τη εντολή apropos.

3 - Η σύνοψη της εντολής παρουσιάζει μια τεχνική σημειογραφία όλων των επιλογών και/ή των ορισμάτων που μπορεί να πάρει αυτή η εντολή. Μπορείτε να σκεφτείτε μια επιλογή σαν τον τρόπο για να εκτελέσετε μια εντολή. Το όρισμα είναι αυτό το οποίο εκτελέσατε. Μερικές εντολές δεν έχουν επιλογές και ορίσματα. Προαιρετικές επιλογές και ορίσματα βρίσκονται μεταξύ "[" και"]" για να δείξουν ότι μπορούν να παραλειφθούν.

4 - Δίνεται μια μεγαλύτερη περιγραφή της εντολής.

5 - Οι επιλογές με τις περιγραφές τους βρίσκονται σε λίστα. Οι επιλογές συνήθως συνδυάζονται. Αν όχι, αυτή η παράγραφος θα σας ενημερώσει γι’ αυτό.

6 - Το περιβάλλον περιγράφει τις μεταβλητές του κελύφους που επηρεάζουν τη συμπεριφορά αυτής της εντολής (δε συμβαίνει αυτό με όλες τις εντολές).

7 - Μερικές φορές ορίζονται παράγραφοι ειδικά γι’ αυτή την εντολή.

8 - Μια αναφορά στις άλλες σελίδες του man δίνεται στην ενότητα "SEE ALSO". Μεταξύ των παρενθέσεων βρίσκεται ο αριθμός της παραγράφου της σελίδας του man στην οποία μπορείτε να βρείτε την εντολή αυτή. Έμπειροι χρήστες επιστρέφουν στη μεριά του "SEE ALSO" χρησιμοποιώντας την εντολή  / ακολουθούμενη από το αλφαριθμητικό αναζήτησης  SEE και πατώντας Enter.

9 - Συχνά υπάρχουν πληροφορίες για ανωμαλίες(bugs) και το που πρέπει να αναφέρετε νέα bugs που μπορεί να βρείτε.

10 - Μπορεί ακόμα να υπάρχει συγγραφέας και πληροφορίες πνευματικών δικαιωμάτων.

Μερικές εντολές έχουν πολλαπλές σελίδες στο man. Για παράδειγμα, η εντολή  passwd έχει μια σελίδα man στην ενότητα  1 και άλλη μια στην ενότητα 5. Προκαθορισμένα, εμφανίζεται η σελίδα με τον μικρότερο αριθμό. Αν θέλετε να βλέπετε άλλη ενότητα από την προκαθορισμένη, καθορίστε το μετά την εντολή man:

man 5 passwd

Αν θέλετε να βλέπετε όλες τις σελίδες του man για μια εντολή, τη μια μετά την άλλη, χρησιμοποιήστε το -a μετά το man:

man -a passwd

Μ’ αυτό τον τρόπο, όταν φτάσετε στο τέλος της πρώτης σελίδας του man και πατήστε q ξανά, θα εμφανιστεί η σελίδα από την επόμενη ενότητα.


2.3.3. Περισσότερες πληροφορίες

2.3.3.1. Οι σελίδες Info

Εκτός από τις σελίδες του man, μπορείτε να διαβάσετε τις σελίδες Info για μια εντολή, χρησιμοποιώντας την εντολή info. Αυτές συνήθως περιέχουν πιο πρόσφατες πληροφορίες και είναι κάπως ευκολότερες στη χρήση. Οι σελίδες man για μερικές εντολές αναφέρονται στις σελίδες Info.

Ας αρχίσουμε πληκτρολογώντας info info σε ένα παράθυρο τερματικού:

File: info.info,  Node: Top,  Next: Getting Started,  Up: (dir)
Info: An Introduction
*********************
   Info is a program, which you are using now, for reading
documentation of computer programs.  The GNU Project distributes most
of its on-line manuals in the Info format, so you need a program called
"Info reader" to read the manuals.  One of such programs you are using
now.
   If you are new to Info and want to learn how to use it, type the
command `h' now.  It brings you to a programmed instruction sequence.
   To learn advanced Info commands, type `n' twice.  This brings you to
`Info for Experts', skipping over the `Getting Started' chapter.
* Menu:
* Getting Started::             Getting started using an Info reader.
* Advanced Info::               Advanced commands within Info.
* Creating an Info File::       How to make your own Info file.
--zz-Info: (info.info.gz)Top, 24 lines --Top-------------------------------
Welcome to Info version 4.2. Type C-h for help, m for menu item.

Χρησιμοποιήστε τα βέλη για να ψάξετε μέσα στο κείμενο και μετακινήστε τον δρομέα σε μια γραμμή που αρχίζει με έναν αστερίσκο, και περιλαμβάνει την λέξη κλειδί για την οποία θέλετε πληροφορίες, μετά πατήστε Enter. Χρησιμοποιείστε τα πλήκτρα P και N για να πάτε στην προηγούμενη ή επόμενη εντολή. Η μπάρα διαστήματος σας μετακινεί μια σελίδα ακόμα, άσχετα με το κατά πόσο αυτή ξεκινά ένα καινούργιο θέμα ή μια σελίδα Info για άλλη εντολή. Χρησιμοποιήστε το Q για να παραιτηθείτε. Το πρόγραμμα info έχει περισσότερες πληροφορίες.


2.3.3.2. Οι εντολές whatis και apropos

Κάθε manual εντολής περιλαμβάνει μια μικρή περιγραφή. Με την εντολή whatis εμφανίζεται αυτή η μικρή περιγραφή. Βλέπουμε παρακάτω ένα παράδειγμα:

[your_prompt] whatis ls
ls                   (1)  - list directory contents
      

Εμφανίζονται λίγες πληροφορίες για μια εντολή, και η πρώτη ενότητα της συλλογής των σελίδων man που περιέχει την κατάλληλη σελίδα.

Αν δεν γνωρίζετε από πού να ξεκινήσετε και ποια σελίδα man να διαβάσετε, η apropos σας δίνει περισσότερες πληροφορίες. Υποθέστε ότι δεν ξέρετε πώς να ξεκινήσετε έναν περιηγητή (browser), τότε θα μπορούσατε να εισάγετε την ακόλουθη εντολή:

another prompt> apropos browser
Galeon [galeon](1)  - gecko-based GNOME web browser
lynx           (1)  - a general purpose distributed information browser 
                    for the World Wide Web
ncftp          (1)  - Browser program for the File Transfer Protocol
opera          (1)  - a graphical web browser
pilot          (1)  - simple file system browser in the style of the 
                    Pine Composer
pinfo          (1)  - curses based lynx-style info browser
pinfo [pman]   (1)  - curses based lynx-style info browser
viewres        (1x)  - graphical class browser for Xt
      

Αφού πατήσετε Enter θα δείτε ότι υπάρχει πάρα πολύ υλικό στο μηχάνημά σας που σχετίζεται με περιηγητές: όχι μόνο περιηγητές του παγκόσμιου ιστού, αλλά ακόμη περιηγητές αρχείων και FTP, και περιηγητές τεκμηρίωσης. Αν έχετε εγκατεστημένα πλήρη προγραμματιστικά πακέτα, μπορεί να έχετε ακόμα τις κατάλληλες συνοδευτικές σελίδες του man. Γενικά , μια εντολή με τη σελίδα man στην ενότητα ένα, δηλαδή μια συμβολιζόμενη με "(1)", είναι κατάλληλη για να χρησιμοποιηθεί από απλούς χρήστες. Ο χρήστης που χειρίστηκε την παραπάνω apropos μπορεί συνεπώς να δοκιμάσει να ξεκινήσει τις εντολές galeon, lynx ή opera, αφού αυτές έχουν να κάνουν καθαρά με την πλοήγηση στον παγκόσμιο ιστό.


2.3.3.3. Η επιλογή --help

Οι περισσότερες GNU εντολές υποστηρίζουν την  --help, που δίνει μια μικρή επεξήγηση για το πώς να χρησιμοποιήσεις την εντολή και μια λίστα με διαθέσιμες επιλογές. Παρακάτω είναι η έξοδος αυτής της επιλογής με την εντολή cat:

userprompt@host: cat --help
Usage: cat [OPTION] [FILE]...
Concatenate FILE(s), or standard input, to standard output.

  -A, --show-all           equivalent to -vET
  -b, --number-nonblank    number nonblank output lines
  -e                       equivalent to -vE
  -E, --show-ends          display $ at end of each line
  -n, --number             number all output lines
  -s, --squeeze-blank      never more than one single blank line
  -t                       equivalent to -vT
  -T, --show-tabs          display TAB characters as ^I
  -u                       (ignored)
  -v, --show-nonprinting   use ^ and M- notation, 
                           except for LFD and TAB
      --help     display this help and exit
      --version  output version information and exit

With no FILE, or when FILE is -, read standard input.

Report bugs to <bug-textutils@gnu.org>.

2.3.3.4. Γραφική βοήθεια

Μην απελπίζεστε αν προτιμάτε μια γραφική διεπαφή χρήστη.  Ο Konqueror, ο προεπιλεγμένος διαχειριστής αρχείων του KDE, εξασφαλίζει μια ανώδυνη και πολύχρωμη πρόσβαση στις σελίδες man και Info. Ίσως θέλετε να δοκιμάσετε "info:info" στη Θέση της μπάρας διευθύνσεων, και θα πάρετε μια περιηγήσιμη σελίδα Info για την εντολή info. Όμοια, η "man:ls" θα σας παρουσιάσει τη σελίδα του  man για την εντολή ls. Ακόμη επιτρέπει τη συμπλήρωση του ονόματος της εντολής: θα δείτε τις σελίδες του man για όλες τις εντολές που αρχίζουν από "ls" σε ένα μενού κύλισης προς τα κάτω. Εισάγοντας "info:/dir" στη θέση της εργαλειοθήκης διεύθυνσης εμφανίζονται όλες οι σελίδες Info, τακτοποιημένες σε τυπικές κατηγορίες. Εξαιρετικό περιεχόμενο βοήθειας, συμπεριλαμβανομένου του εγχειριδίου του Konqueror. Ξεκινήστε από το μενού ή πληκτρολογώντας την εντολή  konqueror στο τερματικό, ακολουθούμενη από Enter; Δείτε το στιγμιότυπο της οθόνης παρακάτω.

Εικόνα 2-2. Ο Konqueror ως περιηγητής βοήθειας

Ο περιηγτής βοήθειας του Gnome είναι επίσης πολύ φιλικός προς τον χρήστη. Μπορείτε να αρχίσετε επιλέγοντας Σύστημα->Βοήθεια ->Τεκμηρίωση Συστήματος (ΣτΜ στο Ubuntu) για το μενού του Gnome, ή κάνοντας κλικ στο εικονίδιο με το σωσίβιο του ναυαγοσώστη στην επιφάνεια εργασίας (αν υπάρχει) ή εισάγοντας την εντολή gnome-help σε ένα παράθυρο τερματικού. Η τεκμηρίωση του συστήματος και οι σελίδες man είναι εύκολα περιηγήσιμες με μια  απλή διασύνδεση.

Ο διαχειριστή αρχείων nautilus παρέχει ένα ερευνήσιμο κατάλογο των σελίδων man και Info, είναι εύκολα περιηγήσιμες και διασυνδεόμενες. Ο nautilus ξεκινά από μια γραμμή εντολής, ή κάνοντας κλικ στο εικονίδιο του αρχικού καταλόγου, ή από το μενού του Gnome.

Το μεγάλο πλεονέκτημα του GUIs για την τεκμηρίωση του συστήματος είναι ότι όλες οι πληροφορίες είναι απολύτως διασυνδεόμενες, έτσι μπορείτε να κάνετε κλικ στις ενότητες  "SEE ALSO"  και όπου κι αν εμφανίζονται συνδέσεις με άλλες σελίδες του man, και συνεπώς περιηγηθείτε και αποκτήστε γνώση χωρίς διακοπή για ώρες κάθε φορά.


2.3.3.5. Εξαιρέσεις

Μερικές εντολές δεν έχουν ξεχωριστή τεκμηρίωση, γιατί είναι μέρος άλλων εντολών. Οι cd, exit, logout και pwd αποτελούν τέτοιες εξαιρέσεις. Είναι μέρος του προγράμματος του κελύφους σας και ονομάζονται ενσωματωμένες εντολές. Για πληροφορίες σχετικά με αυτό, απευθυνθείτε στις σελίδες man ή info του κελύφους σας. Οι περισσότεροι αρχάριοι χρήστες Linux χρησιμοποιούν κέλυφος Bash. Για περισσότερα σχετικά με τα κελύφη  δείτε Ενότητα 3.2.3.2 .

Αν έχετε αλλάξει την αυθεντική διαμόρφωση του συστήματος, είναι πιθανό οι σελίδες man να είναι ακόμα εκεί, αλλά να μην είναι ορατές επειδή το περιβάλλον κελύφους σας έχει αλλάξει. Σ’ αυτή την περίπτωση, θα χρειαστεί να ελέγξετε τη μεταβλητή MANPATH. Το πώς να το κάνετε αυτό εξηγείτε στην Ενότητα 7.2.1.2.

Κάποια προγράμματα ή πακέτα έχουν πληροφορίες και αναφορές μόνο στο κατάλογο /usr/share/doc. Δείτε Ενότητα 3.3.4 για το τρόπο εμφάνισής τους.

Στη χειρότερη περίπτωση, μπορεί να έχετε αφαιρέσει την τεκμηρίωση από το σύστημα σας κατά λάθος(ελπίζοντας κατά λάθος, γιατί αν έχει γίνει σκόπιμα είναι πολύ κακή ιδέα). Σ’ αυτή τη περίπτωση, πρώτα σιγουρευτείτε ότι δεν έχει απομείνει τίποτα κατάλληλο χρησιμοποιώντας ένα εργαλείο αναζήτησης, διαβάστε στην  Ενότητα 3.3.3. Αν συμβαίνει αυτό, πρέπει να εγκαταστήσετε ξανά το πακέτο που περιέχει την εντολή στην οποία αναφέρεται η τεκμηρίωση, δείτε Ενότητα 7.5.


2.4. Περίληψη

Το Linux παραδοσιακά λειτουργεί με διεπαφή κειμένου ή με γραφική διεπαφή. Αφού οι δυνατότητες της CPU και της RAM δεν είναι πλέον το θέμα στις μέρες μας, κάθε χρήστης Linux μπορεί να καταφέρει να εργαστεί σε γραφική διεπαφή και συνήθως αυτό κάνει. Αυτό δε σημαίνει ότι δεν πρέπει να γνωρίζετε για τη διεπαφή κειμένου: σε αυτό το βιβλίο θα δουλέψουμε σε περιβάλλον κειμένου, χρησιμοποιώντας παράθυρο τερματικού.

Το Linux ενθαρρύνει τους χρήστες του να αποκτήσουν γνώση και να γίνουν ανεξάρτητοι. Αναπόφευκτα, θα πρέπει να διαβάσετε πολύ από την τεκμηρίωση για να επιτύχετε αυτό τον στόχο. Γι’ αυτό, όπως θα παρατηρήσατε, αναφερόμαστε σε επιπλέον τεκμηρίωση σχεδόν για κάθε εντολή, εργαλεία και προβλήματα που βρίσκονται σε αυτό το βιβλίο. Όσο περισσότερα κείμενα διαβάζετε, τόσο ευκολότερα θα γίνεται και γρηγορότερα θα ξεφυλλίζετε τα εγχειρίδια. Κάντε την ανάγνωση της τεκμηρίωσης μια συνήθεια όσο το δυνατόν συντομότερα. Όταν δε γνωρίζετε την απάντηση σ’ ένα πρόβλημα, η παραπομπή στην τεκμηρίωση θα γίνει η δεύτερη φύση σας.

Έχουμε ήδη μάθει κάποιες εντολές:

Πίνακας 2-3. Νέες εντολές στο κεφάλαιο 2: Βασικά

Εντολή

Σημασία

apropos

Ψάχνει πληροφορίες για μια εντολή ή ένα θέμα.

cat

Εμφανίζει το περιεχόμενο ενός ή περισσοτέρων αρχείων.

cd

Αλλάζει τον τρέχοντα κατάλογο.

exit

Αποσυνδέεται από μια σύνοδο φλοιού.

file

Δίνει πληροφορίες για το περιεχόμενο ενός αρχείου.

info

Διαβάζει τις σελίδες του Info για μια εντολή.

logout

Αποσυνδέεται από μια σύνοδο φλοιού.

ls

Εμφανίζει τα περιεχόμενα του καταλόγου.

man

Διαβάζει τις σελίδες του εγχειριδίου για μια εντολή.

passwd

Αλλάζει τον κωδικό πρόσβασής σας.

pwd

Εμφανίζει το τρέχοντα κατάλογο.


2.5. Ασκήσεις

Τα περισσότερα που μαθαίνουμε είναι κάνοντας λάθη και βλέποντας γιατί τα πράγματα πάνε λάθος. Αυτές οι ασκήσεις είναι φτιαγμένες έτσι ώστε να σας δώσουν να διαβάσετε κάποια λάθος μηνύματα. Ο σκοπός που κάνετε αυτή την άσκηση είναι σημαντικός.

Μη ξεχάσετε να χρησιμοποιήσετε τα χαρακτηριστικά του Bash στη γραμμή εντολής: προσπαθήστε να κάνετε τις ασκήσεις πληκτρολογώντας όσο το δυνατό λιγότερους χαρακτήρες!


2.5.1. Σύνδεση και αποσύνδεση

·         Καθορίστε εάν εργάζεστε σε γραφική μορφή ή μορφή κειμένου.

Εργάζομαι σε μορφή κειμένου/γραφική μορφή. (υπογραμμίστε αυτό που δεν είναι κατάλληλο)

·         Συνδεθείτε με το όνομα χρήστη και τον κωδικό πρόσβασης που δημιουργήσατε για σας κατά τη διάρκεια της εγκατάστασης.

·         Αποσυνδεθείτε.

·         Συνδεθείτε ξανά, χρησιμοποιώντας ένα ανύπαρκτο όνομα χρήστη.

-> Τι συμβαίνει;


2.5.2. Κωδικοί πρόσβασης

Συνδεθείτε ξανά με το όνομα χρήστη και τον κωδικό πρόσβασης.

·         Αλλάξτε τον κωδικό πρόσβασης σε P6p3.aa! και πατήστε το  πλήκτρο Enter.

-> Τι συμβαίνει;

·         Προσπαθήστε ξανά, αυτή τη φορά εισάγετε έναν κωδικό που είναι γελοία εύκολο, όπως 123 ή aaa.

-> Τι συμβαίνει;

·         Προσπαθήστε ξανά, αυτή τη φορά μην εισάγετε έναν κωδικό αλλά απλά πατήστε το πλήκτρο Enter.

-> Τι συμβαίνει;

·         Δοκιμάστε την εντολή psswd αντί για passwd

-> Τι συμβαίνει;

Warning

Νέος κωδικός πρόσβασης

 

Αν δεν αλλάξετε τον κωδικό σας ξανά σε αυτόν που ήταν πριν την άσκηση, θα είναι "P6p3.aa!". Αλλάξτε τον κωδικό σας μετά την άσκηση!

Σημειώστε ότι κάποια συστήματα δεν επιτρέπουν την ανακύκλωση κωδικών, δηλαδή να  ανακτήσετε έναν παλιότερο κωδικό σε συγκεκριμένο χρονικό διάστημα ή αριθμό αλλαγών κωδικών, ή και τα δύο.


2.5.3. Κατάλογοι

Αυτές είναι μερικές ασκήσεις  εμπέδωσης.

·         Εισάγετε την εντολή cd blah

-> Τι συμβαίνει;

·         Εισάγετε την εντολή cd ..

Θυμηθείτε το κενό μεταξύ "cd" και  ".."! Χρησιμοποιήστε την εντολή pwd.

-> Τι συμβαίνει;

·         Εμφανίστε την λίστα με τα περιεχόμενα του καταλόγου με την εντολή  ls.

-> Τι βλέπετε?

-> Τι πιστεύετε ότι είναι αυτά;

-> Ελέξτε χρησιμοποιώντας την εντολή pwd.

·         Εισάγετε την εντολή cd.

-> Τι συμβαίνει;

·         Επαναλάβετε το βήμα 2 δύο φορές.

-> Τι συμβαίνει;

·         Εμφανίστε το περιεχόμενο αυτού του καταλόγου.

·         Προσπαθήστε την εντολή cd root

-> Τι συμβαίνει;

-> Σε ποιους καταλόγους έχετε πρόσβαση;

·         Επαναλάβετε το βήμα 4.

Γνωρίζετε κάποια άλλη δυνατότητα να φτάσετε στο σημείο που είστε τώρα;


2.5.4. Αρχεία

·         Αλλάξτε τον κατάλογο σε / και μετά σε etc. Πληκτρολογήστε ls; αν η έξοδος είναι μακρύτερη από την οθόνη, μεγαλώστε το παράθυρο, ή δοκιμάστε Shift+PageUp και Shift+PageDown.

Το αρχείο inittab περιέχει την απάντηση της πρώτης ερώτησης σ’αυτή τη λίστα. Δοκίμασε σ’αυτή την εντολή file.

-> Ο τύπος αρχείου του inittab μου είναι .....

·         Χρησιμοποιήστε την εντολή cat inittab και διαβάστε το αρχείο.

-> Ποια είναι η προεπιλεγμένη διεπαφή στον υπολογιστή σας;

·         Επιστρέψτε στον δικό σας κατάλογο χρησιμοποιώντας την εντολή cd.

·         Εισάγετε την εντολή file .

-> Βοηθάει αυτό να βρείτε τη σημασία του "."?

·         Μπορείτε να κοιτάξετε το "." χρησιμοποιώντας την εντολή cat;

·         Η βοήθεια για το πρόγραμμα cat εμφανίζεται , χρησιμοποιώντας την επιλογή --help. Χρησιμοποιήστε την επιλογή αρίθμησης των γραμμών εξόδου για να μετρήσετε πόσοι χρήστες βρίσκονται στο αρχείο /etc/passwd.


2.5.5. Λήψη βοήθειας

·         Διαβάστε man intro

·         Διαβάστε man ls

·         Διαβάστε info passwd

·         Εισάγετε την εντολή apropos pwd.

·         Δοκιμάστε man ή info με cd.


Κεφάλαιο 3. Σχετικά με τα αρχεία και το σύστημα αρχείων

Μετά την αρχική εξερεύνηση στο Κεφάλαιο 2, είμαστε έτοιμοι να αναλύσουμε με περισσότερη λεπτομέρεια τα αρχεία και τους καταλόγους σε ένα σύστημα Linux. Πολλοί χρήστες συναντούν δυσκολίες με το Linux διότι τους λείπει μια γενική επισκόπηση για τα είδη των δεδομένων, και τις τοποθεσίες στις οποίες αυτά βρίσκονται. Θα προσπαθήσουμε να ρίξουμε φως στην οργάνωση των αρχείων στο σύστημα αρχείων.
Θα παραθέσουμε επίσης τα πιο σημαντικά αρχεία και καταλόγους και θα χρησιμοποιήσουμε διαφορετικές μεθόδους για την εμφάνιση του περιεχομένου αυτών των αρχείων, ενώ ταυτόχρονα θα μάθουμε με ποιον τρόπο τα αρχεία και οι κατάλογοι μπορούν να δημιουργηθούν, να μετακινηθούν και να διαγραφούν.
Μετά την ολοκλήρωση των ασκήσεων στο κεφάλαιο αυτό θα μπορείτε:

3.1. Γενική επισκόπηση του συστήματος αρχείων του Linux

3.1.1. Αρχεία

3.1.1.1. Γενικά

Μια γενική περιγραφή του συστήματος UNIX, που ισχύει και για το Linux, είναι η εξής:

"Σε ένα σύστημα UNIX τα πάντα είναι αρχεία· εάν κάτι δεν είναι αρχείο, τότε είναι διεργασία."

Η δήλωση αυτή είναι αληθής επειδή υπάρχουν ειδικά αρχεία που είναι κάτι παραπάνω από απλά αρχεία (για παράδειγμα ονομασμένοι δίαυλοι και υποδοχές), αλλά για να παραμείνουν τα πράγματα απλά, η διαπίστωση ότι οτιδήποτε είναι αρχείο είναι μια δεκτή γενίκευση. Ένα σύστημα Linux, όπως το UNIX, δεν κάνει διάκριση μεταξύ ενός αρχείου και ενός καταλόγου, εφόσον ένας κατάλογος είναι απλά ένα αρχείο που περιέχει ονόματα άλλων αρχείων. Προγράμματα, υπηρεσίες, κείμενα, εικόνες κλπ. είναι όλα αρχεία. Συσκευές εισόδου και εξόδου, και γενικά όλες οι συσκευές, θεωρούνται ότι είναι αρχεία σύμφωνα με το σύστημα.

Προκειμένου να γίνει διαχείριση όλων αυτών των αρχείων με μεθοδικό τρόπο, θα μπορούσε να τα αντιληφθεί κανείς μέσα σε μία οργανωμένη δενδρική δομή στον σκληρό δίσκο, όπως γνωρίζουμε από το MS-DOS, για παράδειγμα. Τα μεγάλα κλαδιά περιέχουν περισσότερα κλαδιά, και τα κλαδιά στο τέλος περιέχουν τα φύλλα του δέντρου, δηλαδή τα κανονικά αρχεία. Προς το παρόν θα χρησιμοποιήσουμε αυτή την εικόνα του δέντρου, αλλά θα ανακαλύψουμε αργότερα για ποιο λόγο η εικόνα αυτή δεν είναι απόλυτα ακριβής.


3.1.1.2. Είδη αρχείων

Τα περισσότερα αρχεία είναι απλά αρχεία και ονομάζονται κανονικά αρχεία· περιέχουν απλά δεδομένα, για παράδειγμα αρχεία κειμένου, εκτελέσιμα αρχεία ή προγράμματα, δεδομένα εισόδου σε ή εξόδου από ένα πρόγραμμα κλπ .

Παρόλο που είναι σχετικά ασφαλές να θεωρείτε ότι οτιδήποτε συναντάτε σε ένα σύστημα Linux είναι αρχείο, υπάρχουν κάποιες εξαιρέσεις.

Η επιλογή -l στην εντολή ls εμφανίζει τον τύπο αρχείου, χρησιμοποιώντας τον πρώτο χαρακτήρα κάθε γραμμής εισόδου:

jaime:~/Documents> ls -l
total 80
-rw-rw-r--   1 jaime   jaime   31744 Feb 21 17:56 intro Linux.doc
-rw-rw-r--   1 jaime   jaime   41472 Feb 21 17:56 Linux.doc
drwxrwxr-x   2 jaime   jaime    4096 Feb 25 11:50 course
      

Αυτός ο πίνακας παρέχει μια επισκόπηση των χαρακτήρων που προσδιορίζουν τον τύπο αρχείου:

Πίνακας 3-1. Τύποι αρχείων στην επιλογή -l

Σύμβολο

Ερμηνεία

-

Κανονικό αρχείο

d

Κατάλογος

l

Σύνδεσμος

c

Ειδικό αρχείο

s

Υποδοχή

p

Ονομασμένη σωλήνωση

b

Συσκευή δεδομένων

Προκειμένου να μην απαιτείται να προβαίνετε στην εμφάνιση της μεγάλης λίστας για να βρίσκετε τον τύπο των αρχείων, πολλά συστήματα εξ' ορισμού δεν διανέμουν απλά την ls, αλλά την ls -F, η οποία προσθέτει ως κατάληξη στα ονόματα των αρχείων έναν από τους χαρακτήρες "/=*|@" για να υποδηλώσουν τον τύπο αρχείου. Για να γίνει πιο κατανοητό στον αρχάριο χρήστη, οι επιλογές -F και --color συνήθως συνδυάζονται, βλέπε Ενότητα 3.3.1.1. Θα χρησιμοποιήσουμε την ls -F από την αρχή μέχρι το τέλος αυτού του εγγράφου για ευκολότερη ανάγνωση.

Ως χρήστης, θα χρειαστείτε να ασχοληθείτε άμεσα μόνο με απλά αρχεία, εκτελέσιμα αρχεία, καταλόγους και συνδέσμους. Οι τύποι ειδικών αρχείων υπάρχουν για να υποχρεώνουν το σύστημα να κάνει ό,τι εσείς απαιτείτε από αυτό και διαμορφώνονται από διαχειριστές συστημάτων και προγραμματιστές.

Τώρα, προτού αναφερθούμε στα σημαντικά αρχεία και καταλόγους, είναι ανάγκη να γνωρίζουμε περισσότερα σχετικά με τη διαμέριση.


3.1.2. Σχετικά με τη διαμέριση

3.1.2.1. Γιατί διαμέριση;

Οι περισσότεροι έχουμε μια ασαφή εικόνα σχετικά με το τι είναι τα διαμερίσματα, καθώς κάθε λειτουργικό σύστημα έχει την ικανότητα να τις δημιουργεί ή να τις διαγράφει. Μπορεί να εμφανίζεται παράξενο το γεγονός ότι το Linux χρησιμοποιεί περισσότερο από ένα διαμέρισμα στον ίδιο δίσκο, ακόμα και αν χρησιμοποιηθεί η προεπιλεγμένη διαδικασία εγκατάστασης, γι' αυτό το λόγο θα δώσουμε κάποιες εξηγήσεις.

Ένας από τους στόχους των διαφορετικών διαμερισμάτων είναι η υψηλότερη ασφάλεια δεδομένων σε περίπτωση καταστροφής. Με τον διαχωρισμό του σκληρού δίσκου σε διαμερίσματα τα δεδομένα μπορούν να ομαδοποιηθούν και να διαχωριστούν. Όταν συμβαίνει ένα ατύχημα, μόνο τα δεδομένα στο διαμέρισμα που δέχθηκε το πλήγμα θα καταστραφούν, ενώ τα δεδομένα στα υπόλοιπα διαμερίσματα είναι πολύ πιθανό να διασωθούν.

Αυτή η αρχή ανατρέχει στην εποχή που το Linux δεν είχε συστήματα αρχείων καταγραφής και οι διακοπές λειτουργίας μπορεί να οδηγούσαν σε καταστροφή. Η πρακτική των πολλαπλών κατατμήσεων συνεχίζεται ακόμα και τώρα για λόγους ασφάλειας και σταθερότητας· ώστε ένα ρήγμα στο σύστημα αρχείων να μην σημαίνει αυτόματα πως όλο το σύστημα βρίσκεται σε κίνδυνο. Αυτός είναι σήμερα ο σημαντικότερος λόγος για τη διαμέριση. Ένα απλό παράδειγμα: ένας χρήστης δημιουργεί ένα αρχείο σεναρίου, ένα πρόγραμμα ή μια εφαρμογή διαδικτύου που αρχίζει και γεμίζει τον δίσκο. Εάν ο δίσκος περιέχει μόνο ένα μεγάλο διαμέρισμα, ολόκληρο το σύστημα θα σταματήσει να λειτουργεί αν ο δίσκος γεμίσει. Εάν ο χρήστης αποθηκεύει τα δεδομένα σε ξεχωριστό διαμέρισμα, τότε μόνο η λειτουργία αυτού του διαμερίσματος θα επηρεαστεί, ενώ το διαμέρισμα του συστήματος και πιθανόν και άλλα θα εξακολουθούν να λειτουργούν.

Σημειωτέον ότι με ένα σύστημα αρχείων καταγραφής αποκτάτε ασφάλεια δεδομένων μόνο σε περίπτωση διακοπών λειτουργίας και ξαφνικής αποσύνδεσης αποθηκευτικών συσκευών. Αυτό δεν συμπεριλαμβάνει συνεπώς προστασία δεδομένων από μαγνητικά προβλήματα δίσκου και λογικά λάθη στο σύστημα αρχείων. Σε αυτές τις περιπτώσεις χρησιμοποιείται η λύση συστοιχίας RAID (Redundant Array of Inexpensive Disks).


3.1.2.2. Διάταξη και τύποι διαμερισμάτων

Υπάρχουν δύο είδη κύριων διαμερισμάτων σε ένα σύστημα Linux:

Τα περισσότερα συστήματα περιέχουν ένα διαμέρισμα ρίζας (root), ένα ή περισσότερα διαμερίσματα δεδομένων και ένα ή περισσότερα διαμερίσματα ανταλλαγής. Συστήματα σε μικτά περιβάλλοντα είναι δυνατό να περιέχουν διαμερίσματα για δεδομένα διαφορετικών συστημάτων όπως μία κατάτμηση συστήματος αρχείων FAT ή VFAT (ή NTFS ΣτΜ) για δεδομένα MS Windows.

Τα περισσότερα συστήματα Linux χρησιμοποιούν το fdisk κατά το χρόνο εγκατάστασης για να θέσουν τον τύπο διαμέρισης. Θα έχετε παρατηρήσει κατά την άσκηση του Κεφαλαίου 1 ότι αυτό συνήθως πραγματοποιείται αυτόματα. Όμως σε μερικές περιπτώσεις δεν θα είστε τόσο τυχεροί. Σε τέτοιες περιπτώσεις θα χρειαστεί να επιλέξετε χειροκίνητα τον τύπο διαμέρισης όπως και να δημιουργήσετε το ίδιο το διαμέρισμα. Τα συνηθισμένα διαμερίσδματα Linux έχουν τον αριθμό 82 για το swap και 83 για δεδομένα, όπου μπορεί να είναι είτε διαμέρισμα με καταγραφή (ext3) είτε απλό (ext2, σε παλαιότερα συστήματα). Το εργαλείο fdisk εμπεριέχει βοήθεια, σε περίπτωση που ξεχάσετε αυτές τις τιμές.

Εκτός από αυτούς του δύο τύπους, το Linux υποστηρίζει μια συλλογή από άλλους τύπους συστημάτων αρχείων, όπως το σχετικά πρόσφατο σύστημα Reiser, JFS, NFS, FATxx και πολλά ακόμη συστήματα αρχείων που είναι διαθέσιμα σε άλλα (εμπορικά) λειτουργικά συστήματα.

Το συνηθισμένο διαμέρισμα ρίζας (που υποδεικνύεται με μια αριστερότροπη κάθετο /) είναι περίπου 100-500MB, και περιέχει αρχεία διαμόρφωσης του συστήματος, τις περισσότερες βασικές εντολές και τα προγράμματα διακομιστή, τις βιβλιοθήκες του συστήματος, κάποιο προσωρινό χώρο αποθήκευσης και τον κατάλογο εργασίας του υπερ-χρήστη (διαχειριστή). Μία συνηθισμένη εγκατάσταση απαιτεί περίπου 250MB για το διαμέρισμα ρίζας (root).

Το διαμέρισμα ανταλλαγής (που υποδεικνύεται με το Swap) είναι προσπελάσιμος μόνο από το ίδιο το σύστημα, και είναι κρυμμένος στην κανονική λειτουργία. Το Swap είναι το σύστημα που εξασφαλίζει, όπως στα κανονικά συστήματα UNIX, ότι θα συνεχίσετε να εργάζεστε οτιδήποτε και αν συμβεί. Στο Linux, δε θα συναντήσετε ποτέ ενοχλητικά μηνύματα όπως Μνήμη πλήρης, παρακαλώ κλείστε κάποιες εφαρμογές και ξανα-προσπαθήστε, χάρη σε αυτήν την επιπλέον μνήμη. Η διαδικασία εικονικής μνήμης έχει εδώ και καιρό υιοθετηθεί και από λειτουργικά συστήματα έξω από τον κόσμο του UNIX.

Η χρήση της μνήμης που βρίσκεται στον σκληρό δίσκο απαιτεί περισσότερο χρόνο συγκριτικά προς την χρήση της πραγματικής μνήμης ενός υπολογιστή, αλλά η ύπαρξή της προσδίδει μεγάλη άνεση. Θα μάθουμε περισσότερα για το swap όταν μιλήσουμε για τις διεργασίες στο Κεφάλαιο 4.

Το Linux γενικά βασίζεται στη δημιουργία χώρου swap με μέγεθος διπλάσιο από το αντίστοιχο μέγεθος της φυσικής μνήμης. Όταν εγκαθιστάτε ένα σύστημα, θα πρέπει να γνωρίζετε πως θα το κάνετε αυτό. Ένα παράδειγμα συστήματος με 512MB RAM:

Η τελευταία επιλογή θα έχει την καλύτερη απόδοση όταν έχουμε μεγάλο βαθμό δεδομένων Εισόδου/Εξόδου.

Διαβάστε το εγχειρίδιο του προγράμματος που θέλετε να χρησιμοποιήσετε για συγκεκριμένες οδηγίες. Κάποιες εφαρμογές όπως οι βάσεις δεδομένων, είναι πιθανό να χρειάζονται περισσότερο χώρο ανταλλαγής. Άλλες πάλι, όπως σε μερικά φορητά συστήματα, μπορεί να μην έχουν καθόλου χώρο ανταλλαγής λόγω του περιορισμένου μεγέθους του σκληρού δίσκου. Ο χώρος ανταλλαγής εξαρτάται επίσης από την έκδοση του πυρήνα που χρησιμοποιείτε.

Σε πολλές διανομές ο πυρήνας βρίσκεται σε ξεχωριστό διαμέρισμα, επειδή είναι το πιο σημαντικό αρχείο στο σύστημα αρχείων. Εάν συμβαίνει αυτό, τότε θα ανακαλύψετε ότι έχετε και ένα διαμέρισμα /boot, όπου υπάρχει ο πυρήνας(ή πυρήνες) μαζί και τα άλλα συνοδευτικά αρχεία δεδομένων.

Το υπόλοιπο μέρος του σκληρού δίσκου(ων) είναι γενικά χωρισμένο σε διαμερίσματα δεδομένων, παρόλο που είναι δυνατόν όλα τα μη κρίσιμα δεδομένα για το σύστημα να βρίσκονται σε ένα διαμέρισμα, όπως για παράδειγμα όταν πραγματοποιείτε μία συνηθισμένη εγκατάσταση σταθμού εργασίας. Όταν μη κρίσιμα δεδομένα διαχωρίζονται σε διαφορετικά διαμερίσματα, αυτό πραγματοποιείται συνήθως ακολουθώντας ένα ορισμένο υπόδειγμα:

Μετά την ολοκλήρωση της διαμέρισης, μπορείτε μόνο να προσθέσετε διαμερίσματα. Η αλλαγή του μεγέθους και των ιδιοτήτων των υπαρχόντων διαμερισμάτων είναι δυνατή αλλά δεν ενδείκνυται.

Η διαμέριση καθορίζεται από τον διαχειριστή του του συστήματος. Σε μεγαλύτερα συστήματα, ο/η διαχειριστής του συστήματος μπορούν να μοιράσουν ένα διαμέρισμα σε πολλούς σκληρούς δίσκους χρησιμοποιώντας το κατάλληλο λογισμικό. Οι περισσότερες διανομές προσφέρουν πρότυπες εγκαταστάσεις βελτιστοποιημένες για σταθμούς εργασίας (μέσοι χρήστες) και για διακομιστές γενικού σκοπού, αλλά δέχονται και προσαρμοσμένες διαμερίσεις. Κατά την διαδικασία της εγκατάστασης μπορείτε να καθορίσετε την δική σας διαμέριση χρησιμοποιώντας είτε το ειδικό εργαλείο της διανομής, που είναι συνήθως ένα καθαρά γραφικό περιβάλλον, είτε το fdisk, ένα εργαλείο εντολών για διαμέριση και τον καθορισμό των ιδιοτήτων τους.

Μια εγκατάσταση σταθμού εργασίας ή πελάτη επιλέγεται για χρήση κυρίως από τον ίδιο τον χρήστη. Αυτό αντικατοπτρίζεται από το λογισμικό προς εγκατάσταση που δίνει έμφαση στα πακέτα χρήστη, όπως όμορφα θέματα επιφάνειας εργασίας, εργαλεία ανάπτυξης, προγράμματα πελατών για ηλεκτρονικό ταχυδρομείο, λογισμικό πολυμέσων, διαδίκτυο και άλλες υπηρεσίες. Τα πάντα τοποθετούνται μαζί σε ένα μεγάλο διαμέρισμα, προστίθεται χώρος swap διπλάσιος από την RAM και ο σταθμός εργασίας σας είναι ολοκληρωμένος, παρέχοντας το μεγαλύτερο δυνατό μέρος του χώρου του σκληρού δίσκου για προσωπική χρήση, αλλά με το μειονέκτημα της πιθανής απώλειας της ακεραιότητας των δεδομένων σε περίπτωση εμφάνισης προβλημάτων.

Σε έναν διακομιστή, τα δεδομένα του συστήματος βρίσκονται συνήθως χωριστά από τα δεδομένα χρηστών. Προγράμματα που προσφέρουν υπηρεσίες διατηρούνται σε ξεχωριστό μέρος από τα τα δεδομένα που χειρίζεται η ίδια η υπηρεσία. Σε τέτοια συστήματα δημιουργούνται διαφορετικά διαμερίσματα:

Οι διακομιστές συνήθως έχουν περισσότερη μνήμη και συνακόλουθα χρειάζονται περισσότερο χώρο swap. Συγκεκριμένες διεργασίες του διακομιστή όπως βάσεις δεδομένων, είναι πιθανό να απαιτούν περισσότερο χώρο swap από τον συνηθισμένο· δείτε το συγκεκριμένο εγχειρίδιο για αναλυτικές πληροφορίες. Για καλύτερη απόδοση, το swap χωρίζεται σε διάφορα διαμερίσματα swap.


3.1.2.3. Σημεία προσάρτησης (mounting points)

Όλα τα διαμερίσματα είναι συνδεδεμένα στο σύστημα μέσω ενός σημείου προσάρτησης. Το σημείο προσάρτησης καθορίζει την τοποθεσία μιας συγκεκριμένης σειράς δεδομένων στο σύστημα αρχείων. Συνήθως όλα τα διαμερίσματα συνδέονται μέσω του διαμερίσματος ρίζας. Σε αυτό το διαμέρισμα, που υποδεικνύεται με την αριστερόστροφη κάθετο (/), δημιουργούνται οι κατάλογοι. Αυτοί οι άδειοι κατάλογοι θα είναι το αρχικό σημείο των διαμερισμάτων που συνδέονται. Ένα παράδειγμα: έστω ένα διαμέρισμα που περιέχει τους παρακάτω καταλόγους:

videos/         cd-images/      pictures/

Θέλουμε να συνδέσουμε αυτό το διαμέρισμα στο σύστημα αρχείων σε έναν κατάλογο που ονομάζεται /opt/media. Για να γίνει κάτι τέτοιο, ο διαχειριστής συστήματος πρέπει να βεβαιωθεί ότι ο κατάλογος /opt/media υπάρχει στο σύστημα. Κατά προτίμηση θα πρέπει να είναι ένας άδειος κατάλογος. Πώς πραγματοποιείται αυτό αναλύεται παρακάτω στο κεφάλαιο. Στη συνέχεια, χρησιμοποιώντας την εντολή mount, ο διαχειριστής μπορεί να προσαρτήσει το διαμέρισμα στο σύστημα. Εάν κοιτάξετε τα περιεχόμενα του προηγουμένως άδειου καταλόγου /opt/media, θα δείτε ότι περιέχει τους καταλόγους που βρίσκονται στο προσαρτημένο μέσο (σκληρός δίσκος ή διαμέρισμα ενός σκληρού δίσκου, CD,DVD, κάρτα flash, USB stick ή άλλο αποθηκευτικό μέσο).

Κατά την διάρκεια της εκκίνησης του συστήματος, προσαρτώνται τα διαμερίσματα όπως περιγράφεται στο αρχείο /etc/fstab. Κάποια διαμερίσματα δεν προσαρτώνται εξ' ορισμού, για παράδειγμα αυτά που δεν είναι διαρκώς συνδεδεμένα στο σύστημα, όπως το μέσο αποθήκευσης που χρησιμοποιείται από την ψηφιακή σας φωτογραφική μηχανή. Εάν ρυθμιστεί σωστά, η συσκευή θα προσαρτηθεί αμέσως μόλις το σύστημα διαπιστώσει ότι έχει συνδεθεί ή αλλιώς θα εξαρτάται από τον χρήστη της συσκευής, δηλαδή δεν χρειάζεται να είστε απαραίτητα διαχειριστής του συστήματος για να προσαρτήσετε και απο-προσαρτήσετε την συσκευή από το σύστημα. Σχετικό παράδειγμα υπάρχει στην Ενότητα 9.3.

Σε ένα σύστημα που λειτουργεί, πληροφορίες σχετικά με τα διαμερίσματα και τα σημεία προσάρτησής τους μπορούν να εμφανισθούν χρησιμοποιώντας την εντολή df (όπου σημαίνει δίσκος γεμάτος ή δίσκος ελεύθερος). Στο Linux, η εντολή df είναι η έκδοση του GNU, και υποστηρίζει την επιλογή -h(ή αλλιώς human readable- ανθρώπινα κατανοητό), η οποία βελτιώνει κατά πολύ την αναγνωσιμότητα. Παρατηρείστε ότι τα εμπορικά μηχανήματα UNIX συνήθως έχουν δικές τους εκδόσεις του df και πολλών άλλων εντολών. Η συμπεριφορά τους είναι συνήθως η ίδια, αν και οι εκδόσεις των κοινών εργαλείων του GNU έχουν συνήθως περισσότερα και καλύτερα χαρακτηριστικά.

Η εντολή df εμφανίζει μόνο πληροφορίες σχετικά με τα ενεργά διαμερίσματα, εκτός των swap. Αυτά μπορεί να περιλαμβάνουν διαμερίσματα από άλλα συστήματα συνδεδεμένα στο δίκτυο, όπως στο παράδειγμα παρακάτω όπου οι προσωπικοί κατάλογοι είναι προσαρτημένοι από ένα διακομιστή αρχείων στο δίκτυο, μία κατάσταση που συχνά συναντάται σε συλλογικά περιβάλλοντα.

freddy:~> df -h
Filesystem          Size  Used Avail Use% Mounted on
/dev/hda8           496M  183M  288M  39% /
/dev/hda1           124M  8.4M  109M   8% /boot
/dev/hda5            19G   15G  2.7G  85% /opt
/dev/hda6           7.0G  5.4G  1.2G  81% /usr
/dev/hda7           3.7G  2.7G  867M  77% /var
fs1:/home           8.9G  3.7G  4.7G  44% /.automount/fs1/root/home
      

3.1.3. Περισσότερα για τη διάταξη του συστήματος αρχείων

3.1.3.1. Οπτική απεικόνιση

Για ευκολία, το σύστημα αρχείων Linux γίνεται αντιληπτό ως μια δενδρική δομή. Σε ένα σύνηθες σύστημα Linux θα διαπιστώσετε ότι η διάταξη ακολουθεί γενικά τον παρακάτω συνδυασμό.

Εικόνα 3-1. Διάταξη συστήματος αρχείων Linux

Αυτή είναι μια διάταξη από σύστημα RedHat. Ανάλογα με τον διαχειριστή του συστήματος, το λειτουργικό σύστημα και την αποστολή του μηχανήματος UNIX, η δομή μπορεί να ποικίλλει, και κατάλογοι μπορούν να παραλειφθούν ή να προστεθούν κατά βούληση. Τα ονόματα δεν είναι προκαθορισμένα· είναι απλώς συμβατικά.

Το δέντρο του συστήματος αρχείων ξεκινά από την κάθετο, που υποδεικνύεται με μια αριστερότροπη κάθετο (/). Αυτός ο κατάλογος περιέχει όλους τους υποκείμενους καταλόγους και αρχεία και επίσης ονομάζεται κατάλογος-ρίζα ή αλλιώς "ρίζα" του συστήματος αρχείων.

Κατάλογοι που βρίσκονται ένα μόνο επίπεδο κάτω από τον κατάλογο ρίζα συχνά συνοδεύονατι από μία κάθετο για να δείξουν τη θέση τους και να αποτρέψουν τη σύγχυση με άλλους καταλόγους που θα μπορούσαν να έχουν το ίδιο όνομα. Ξεκινώντας με ένα νέο σύστημα, είναι πάντα μια καλή ιδέα να ρίχνουμε μια ματιά στο κατάλογο ρίζα. Ας δούμε τι μπορεί να βρείτε εκεί:

emmy:~> cd /
emmy:/> ls
bin/   dev/  home/    lib/         misc/  opt/     root/  tmp/  var/
boot/  etc/  initrd/  lost+found/  mnt/   proc/    sbin/  usr/
      

Πίνακας 3-2. Υποκατάλογοι του καταλόγου ρίζα

Κατάλογος

Περιεχόμενο

/bin

Κοινά προγράμματα, που μοιράζονται το σύστημα, ο υπερ-χρήστης (διαχειριστής) του συστήματος και οι χρήστες.

/boot

Τα αρχεία εκκίνησης και ο πυρήνας, vmlinuz. Σε κάποιες πρόσφατες διανομές βρίσκονται και δεδομένα του grub. Τo Grub είναι το GRand Unified Boot loader και είναι μια προσπάθεια για να αποπεμφθούν οι πολλοί και διάφοροι διαχειριστές εκκίνησης που γνωρίζουμε σήμερα.

/dev

Περιέχει αναφορές για όλο υλικό των περιφερειακών συσκευών της CPU, οι οποίες παρουσιάζονται σαν αρχεία με ειδικές ιδιότητες.

/etc

Τα πιο σημαντικά αρχεία διαμόρφωσης του συστήματος βρίσκονται στον /etc, ο κατάλογος αυτός περιέχει δεδομένα παρόμοια με αυτά στον Πίνακα Ελέγχου των Windows

/home

Προσωπικοί κατάλογοι των κοινών χρηστών.

/initrd

(σε μερικές διανομές) Πληροφορίες για εκκίνηση. Μη τον διαγράφετε!

/lib

Αρχεία βιβλιοθηκών, περιέχει αρχεία για όλα τα είδη των προγραμμάτων που είναι αναγκαία για το σύστημα και τους χρήστες

/lost+found

Κάθε διαμέρισμα έχει έναν κατάλογο lost+found στον κύριο κατάλογό της. Αρχεία που διασώζονται σε καταστάσεις διακοπών λειτουργίας βρίσκονται εδώ.

/misc

Για διάφορους σκοπούς.

/mnt

Συνηθισμένο σημείο προσάρτησης για εξωτερικά συστήματα, όπως ένα CD-ROM ή μία ψηφιακή μηχανή.

/net

Συνηθισμένο σημείο προσάρτησης για ολόκληρα απομακρυσμένα συστήματα αρχείων.

/opt

Τυπικά, περιέχει επιπλέον λογισμικό και λογισμικό τρίτων εταίρων.

/proc

Ένα εικονικό σύστημα αρχείων που περιέχει πληροφορίες σχετικά με τους πόρους του συστήματος. Περισσότερες πληροφορίες σχετικά με τη σημασία των αρχείων στο proc αποκτάτε με την εισαγωγή της εντολής man proc σε ένα παράθυρο τερματικού. Το αρχείο proc.txt αναλύει το εικονικό σύστημα αρχείων λεπτομερώς.

/root

Ο προσωπικός κατάλογος τους διαχειριστή του συστήματος. Προσέξτε τη διαφορά μεταξύ του /, του καταλόγου ρίζα και του /root, του προσωπικού καταλόγου του χρήστη root.

/sbin

Προγράμματα για χρήση από το σύστημα και τον διαχειριστή του συστήματος.

/tmp

Προσωρινός χώρος για χρήση από το σύστημα, αδειάζει κατά την εκκίνηση, γι' αυτό τον λόγο μη τον χρησιμοποιείτε για να αποθηκεύετε κάποια εργασία!

/usr

Προγράμματα, βιβλιοθήκες, εγχειρίδια κλπ. για όλα τα προγράμματα χρηστών.

/var

Χώρος αποθήκευσης όλων των αρχείων μεταβλητών και προσωρινών αρχείων που δημιουργούνται από τους χρήστες, όπως αρχεία καταγραφής (log), η ουρά ταχυδρομείου και εκτύπωσης, προσωρινός χώρος αποθήκευσης των αρχείων που κατεβαίνουν από το διαδίκτυο ή για την αποθήκευση μιας εικόνας ενός CD πριν την εγγραφή του.

Πώς μπορείτε να βρείτε σε ποιο διαμέρισμα βρίσκεται ο κατάλογος που είστε; Χρησιμοποιώντας την εντολή df με μία τελεία (.) ως επιλογή εμφανίζει το διαμέρισμα, στο οποίο ανήκει ο κατάλογος στον οποίο βρισκόμαστε, και μας πληροφορεί για το μέγεθος του χώρου που χρησιμοποιείται στο διαμέρισμα:

sandra:/lib> df -h .
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda7             980M  163M  767M  18% /
      

Ως γενικός κανόνας, κάθε κατάλογος κάτω από τον κατάλογο ρίζα βρίσκεται στο διαμέρισμα ρίζα (root), εκτός εάν έχει ξεχωριστή καταχώρηση στην πλήρη λίστα από το df (ή το df -h χωρίς άλλες επιλογές).

Διαβάστε περισσότερα με την εντολή man hier.


3.1.3.2. Το σύστημα αρχείων στη πραγματικότητα

Για τους περισσότερους χρήστες και για τις πιο κοινές εργασίες της διαχείρισης του συστήματος, είναι αποδεκτό να θεωρούμε ότι τα αρχεία και οι κατάλογοι είναι οργανωμένοι σε μία δενδρική δομή. Όμως ο υπολογιστής δεν κατανοεί τα δένδρα και τις δενδρικές δομές.

Κάθε διαμέρισμα έχει το δικό της σύστημα αρχείων. Εάν φανταστούμε όλα αυτά τα συστήματα αρχείων μαζί, μπορούμε να σχηματίσουμε μια ιδέα της δενδρικής δομής για το πλήρες σύστημα, αλλά δεν είναι τόσο απλό. Σε ένα σύστημα αρχείων, το αρχείο αναπαριστάται ως ένας inode, ένα είδος σειριακού αριθμού που περιέχει πληροφορίες σχετικά με τα πραγματικά δεδομένα που αποτελούν το αρχείο: σε ποιον ανήκει αυτό το αρχείο και πού βρίσκεται στον σκληρό δίσκο.

Κάθε διαμέρισμα έχει την δική του σειρά από inodes· σε όλη την έκταση ενός συστήματος με πολλαπλά διαμερίσματα, μπορούν να υπάρχουν αρχεία με τον ίδιο αριθμό inode.

Κάθε inode περιγράφει μια δομή δεδομένων στον σκληρό δίσκο, καταγράφοντας τις ιδιότητες του αρχείου, συμπεριλαμβανομένης της φυσικής τοποθεσίας των δεδομένων του αρχείου. Όταν ένας σκληρός δίσκος αρχικοποιείται ώστε να δεχθεί αποθήκευση δεδομένων, συνήθως κατά την εγκατάσταση του αρχικού συστήματος ή όταν προστίθενται επιπλέον δίσκοι σε ένα υπάρχον σύστημα, ένας σταθερός αριθμός inodes δημιουργείται ανά διαμέρισμα. Συνήθως βασιζόμαστε στο ότι υπάρχει 1 inode ανά 2 με 8 kilobytes αποθηκευτικού μέσου.

Την στιγμή που ένα νέο αρχείο δημιουργείται, αποκτά ένα ελεύθερο inode. Σε αυτό τον inode αποθηκεύονται οι ακόλουθες πληροφορίες:

Οι μόνες πληροφορίες που δεν περιέχονται σε έναν inode είναι το όνομα αρχείου και και ο κατάλογος στον οποίο βρίσκεται. Αυτές αποθηκεύονται στα ειδικά αρχεία καταλόγου. Συγκρίνοντας τα ονόματα αρχείων και τους αριθμούς inode, το σύστημα μπορεί να κατασκευάσει μία δενδρική δομή όπου ο χρήστης κατανοεί. Οι χρήστες μπορούν να εμφανίσουν τους αριθμούς inode χρησιμοποιώντας την επιλογή -i στο ls. Οι inodes έχουν τον δικό τους ξεχωριστό χώρο στον δίσκο.


3.2. Προσανατολισμός στο σύστημα αρχείων

3.2.1. Η διαδρομή

Όταν ζητάτε από το σύστημα την εκτέλεση μιας εντολής, σχεδόν ποτέ δεν χρειάζεται να δώσετε τη πλήρη διαδρομή προς το αντίστοιχο εκτελέσιμο πρόγραμμα. Για παράδειγμα γνωρίζουμε οτι η εντολή ls βρίσκεται στον κατάλογο /bin directory (ελέγξτε το με which -a ls), αλλά δεν χρειάζεται να εισάγουμε την εντολή στη μορφή /bin/ls για να εκτελεστεί.

Η μεταβλητή περιβάλλοντος PATH ασχολείται με αυτό. Αυτή η μεταβλητή κρατά όλους τους καταλόγους του συστήματος όπου μπορεί να υπάρχουν εκτελέσιμα αρχεία, και μας γλυτώνει από το να εισάγουμε πλήρη ονόματα διαδρομής. Επόμένως η PATH περιέχει αρκετούς καταλόγους που ονομάζονται bin, όπως φαίνεται στο παρακάτω παράδειγμα.. Η εντολή echo χρησιμοποιείται για την εμφάνιση του περιεχομένου ("$") της μεταβλητής PATH:

rogier:> echo $PATH
/opt/local/bin:/usr/X11R6/bin:/usr/bin:/usr/sbin/:/bin
      

Σε αυτό το παράδειγμα , οι κατάλογοι /opt/local/bin, /usr/X11R6/bin, /usr/bin, /usr/sbin και /bin εξετάζονατι διαδοχικά για την εύρεση του προς εκτέλεση προγράμματος. Μόλις υπάρξει ταύτιση η αναζήτηση σταματά, ακόμη και αν δεν έχουν ερευνηθεί όλοι οι κατάλογοι. Αυτό μπορεί να οδηγήσει σε περίεργες καταστάσεις. Στο πρώτο παράδειγμα παρακάτω, η χρήστης ξέρει οτι υπάρχει ένα πρόγραμμα που λέγεται sendsms για την αποστολή μηνυμάτων SMS, που το χρησιμοποιεί άλλος χρήστης του συστήματος αλλά αυτή δεν μπορεί. Η διαφορά βρίσκεται στη διαμόρφωση της μεταβλητής PATH:

[jenny@blob jenny]$ sendsms
bash: sendsms: command not found
[jenny@blob jenny]$ echo $PATH
/bin:/usr/bin:/usr/bin/X11:/usr/X11R6/bin:/home/jenny/bin
[jenny@blob jenny]$ su - tony
Password:
tony:~>which sendsms
sendsms is /usr/local/bin/sendsms

tony:~>echo $PATH
/home/tony/bin.Linux:/home/tony/bin:/usr/local/bin:/usr/local/sbin:\
/usr/X11R6/bin:/usr/bin:/usr/sbin:/bin:/sbin

Σημειώστε τη χρήση της εντολής su (switch user, αλλαγή χρήστη), που επιτρέπει την εκτέλεση ενός περιβάλλοντος φλοιού άλλου χρήστη, εφ' όσον φυσικά γνωρίζουμε τον κωδικό πρόσβασης.

Η δεξιόστροφη κάθετος (backslash) υποδεικνύει συνέχεια της γραμμής στην επόμενη, χωρίς τη μεσολάβηση Enter.

Στο επόμενο παράδειγμα, ένας χρήστης θέλει να χρησιμοποιήσει την εντολή wc (μέτρηση λέξεων, word count) για να ελέγξει τον αριθμό γραμμάτων σε ένα αρχείο, αλλά τίποτε δεν συμβαίνει και αναγκάζεται να τερματίσει με το συνδυασμό Ctrl+C:

jumper:~> wc -l test

(Ctrl+C)
jumper:> which wc
wc is hashed (/home/jumper/bin/wc)

jumper:~> echo $PATH
/home/jumper/bin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\
/usr/bin:/usr/sbin:/bin:/sbin
      

Η χρήση της εντολής which δείχνει οτι ο χρήστης έχει ένα κατάλογο bin κάτω από τον οικείο του κατάλογο που περιέχει ένα πρόγραμμα που λέγεται επίσης wc. Εφ' όσον ο οικείος κατάλογος βρίσκεται πρώτος στη σειρά αναζήτησης διαδρομών κατά τη κλήση του wc, αυτό το “σπιτικό” πρόγραμμα εκτελείται, με μια είσοδο που πιθανότατα δεν καταλαβαίνει, και έτσι πρέπει να το διακόψουμε. Υπάρχουν διάφοροι τρόποι να λύσουμε το πρόβλημα (έτσι είναι συνήθως στο UNIX/Linux): μια λύση είναι η μετονομασία του προγράμματος wc του χρήστη, μια άλλη είναι να δώσουμε το πλήρες όνομα διαδρομής που μπορούμε να βρούμε με την επιλογή -a στην εντολή which.

Αν ο χρήστης δεν χρησιμοποιεί πολύ τα προγράμματα στον οικείο του κατάλογο μπορεί να τροποποιήσει τη μεταβλητή PATH:

jumper:~> export PATH=/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\
/usr/bin:/usr/sbin:/bin:/sbin:/home/jumper/bin
      

Οι αλλαγές δεν είναι μόνιμες!

Σημειώστε οτι η χρήση της εντολής export σε ένα φλοιό, προκαλούν προσωρινές μόνο αλλαγές που ισχύουν μόνο για τη τρέχουσα σύνοδο του φλοιού (μέχρι την αποσύνδεση). Ακόμη, η εκκίνηση νέων συνόδων ενώ εκτελείται η τρέχουσα, δεν έχει ως αποτέλεσμα την ενημέρωση των νέων συνόδων με τη νέα τιμή της μεταβλητής περιβάλλοντος. Θα δούμε στην Ενότητα 7.2 πώς μπορούμε να καταστήσουμε τέτοιες αλλαγές μόνιμες, προσθέτοντας τις κατάλληλες γραμμές στα αρχεία διαμόρφωσης.


3.2.2. Απόλυτες και σχετικές διαδρομές

Μια διαδρομή αποτελεί την ακολουθία των διακλαδώσεων στην δενδρική δομή του συστήματος για να προσπελάσουμε ένα αρχείο. Αυτή η διαδρομή μπορεί να ξεκινά από τη ρίζα του δένδρου (το κατάλογο ρίζα ή /). Σε αυτή τη περίπτωση (απόλυτη διαδρομή) δεν μπορεί να γίνει λάθος: υπάρχει μόνο ένας τέτοιος κατάλογος.

Στην άλλη περίπτωση (σχετική διαδρομή) η διαδρομή δεν ξεκινά με / αλλά από τον τρέχοντα κατάλογο και το μπέρδεμα είναι πιθανό, ας πούμε μεταξύ του ~/bin/wc (ξεκινούμε από τον οικείο κατάλογο) και του bin/wc στο /usr, από το προηγούμενο παράδειγμα. Οι διαδρομές που δεν αρχίζουν με κάθετο είναι πάντα σχετικές.

Επίσης στις σχετικές διαδρομές χρησιμοποιούμε τις ενδείξεις . και .. για τον τρέχοντα και τον γονικό κατάλογο. Μερικά πρακτικά παραδείγματα:

theo:~> ls /mp3
ls: /mp3: No such file or directory
theo:~>ls mp3/
oriental/  pop/  sixties/
          

3.2.3. Τα σημαντικότερα αρχεία και κατάλογοι

3.2.3.1. Ο πυρήνας (kernel)

Ο πυρήνας είναι η καρδιά του συστήματος. Διαχειρίζεται την επικοινωνία του λογισμικού με το υλικό και τα περιφερειακά. Επίσης ο πυρήνας διασφαλίζει οτι οι διεργασίες και οι δαίμονες (διεργασίες συστήματος και διακομιστή) ξεκινούν και σταματούν την κατάλληλη στιγμή. Ο πυρήνας περικλείει πολλές σημαντικές διαδικασίες, γι' αυτό υπάρχει ειδική λίστα ταχυδρομείου για την ανάπτυξη του πυρήνα, όπου διακινείται τεράστιος όγκος πληροφοριών. Για την ώρα αρκεί να γνωρίζετε οτι ο πυρήνας είναι το σημαντικότερο αρχείο του συστήματος..


3.2.3.2. Ο φλοιός

3.2.3.2.1. Τι είναι φλοιός;

Όταν έψαχνα για μια εξήγηση του όρου φλοιός (shell), προβληματίστηκα περισσότερο από όσο περίμενα. Υπάρχουν διάφοροι ορισμοί, από απλές αναλογίες "σαν το τιμόνι του αυτοκινήτου", τον ασαφή ορισμό του εγχειριδίου Bash που λέει οτι "το bash είναι ένα διερμηνευτής γλώσσας εντολών συμβατών με sh," ή μια ακόμη πιο θολή διατύπωση, "ο φλοιός διαχειρίζεται την αλληλεπίδραση συστήματος και χρηστών". Ο φλοιός είναι περισσότερο από αυτά.

Ένας φλοιός πρέπει να συγκριθεί με ένα τρόπο επικοινωνίας με τον υπολογιστή, μια γλώσσα. Οι περισσότεροι χρήστες γνωρίζουν μια άλλη γλώσσα επικοινωνίας, το point-and-click της επιφάνειας εργασίας. Αλλά σε αυτή τη γλώσσα ο υπολογιστής οδηγά τη συζήτηση, ενώ ο χρήστης έχει τον παθητικό ρόλο της επιλογής μεταξύ των εργασιών που του παρουσιάζονται. Είναι πολύ δύσκολο σε ένα προγραμματιστή να περιλάβει όλες τις επιλογές και πιθανές χρήσεις μιας εντολής σε μια γραφική διεπαφή. Έτσι οι γραφικές διεπαφές είναι σχεδόν πάντα λιγότερο ισχυρές από οτι οι διεπαφές κειμένου που βρίσκονται στο παρασκήνιο.

Ο φλοιός, επομένως, είναι μια ισχυρότερη μέθοδος επικοινωνίας με το σύστημα, επειδή επιτρέπει ισότιμη αμφίδρομη επικοινωνία. Ο χρήστης μπορεί να δοκιμάσει νέες ιδέες, όχι μόνο τις επιλογές που παρουσιάζονται. Ο φλοιός επιτρέπει ευέλικτη και συμπαγή διαχείριση. Επιπρόσθετα ο φλοιός επιτρέπει την αυτοματοποίηση εργασιών.


3.2.3.2.2. Τύποι φλοιών

Όπως υπάρχουν διαφορετικές γλώσσες και διάλεκτοι, υπάρχουν και διαφορετικοί τύποι φλοιών:

Το αρχείο /etc/shells εμφανίζει τους διαθέσιμους φλοιούς του συστήματος:

mia:~> cat /etc/shells
/bin/bash
/bin/sh
/bin/tcsh
/bin/csh
      

Ψεύτικο Bourne shell

Σημειώστε οτι το /bin/sh συνήθως είναι σύνδεσμος στο Bash, που εκτελεί εντολές σε Bourne-συμβατή κατάσταση όταν καλείται έτσι.

Ο προκαθορισμένος φλοιός σας καθορίζεται στο αρχείο /etc/passwd, όπως παρακάτω για το χρήστη mia:

mia:L2NOfqdlPrHwE:504:504:Mia Maya:/home/mia:/bin/bash

Για να αλλάξετε φλοιό, απλά εισάγετε το όνομα του νέου φλοιού στο παράθυρο τερματικού. Το σύστημα αναζητά το όνομα του αρχείου με τη βοήθεια του PATH, και αφού πρόκειται για εκτελέσιμο αρχείο, ο τρέχον φλοιός το εκτελεί και 'καλύπτεται κάτω' από τον νέο φλοιό. Εμφανίζεται μια νέα προτροπή, αφού κάθε φλοιός έχει μια τυπική εμφάνιση:

mia:~> tcsh
[mia@post21 ~]$
      

3.2.3.2.3. Ποιο φλοιό χρησιμοποιώ;

Αν δεν ξέρετε ποιο φλοιό χρησιμοποιείτε, ή ελέγξτε τη γραμμή του λογαριασμού σας στο αρχείο /etc/passwd ή εισάγετε την εντολή:

echo $SHELL


3.2.3.3. Ο οικείος κατάλογος / Κατάλογος Home

Ο οικείος κατάλογός σας είναι ο προκαθορισμένος προορισμός σας όταν συνδέεστε στο σύστημα. Τις περισσότερες φορές είναι ένας υπο-κατάλογος του /home, αν και δεν είναι απαραίτητο. Ο οικείος κατάλογός σας μπορεί να βρίσκεται στο σκληρό δίσκο ενός απομακρυσμένου διακομιστή αρχείων, οπότε η διαδρομή θα ήταν κάπως σαν /nethome/your_user_name. Σε κάποια άλλη περίπτωση ο διαχειριστής μπορεί να προτιμούσε μια λιγότερο κατανοητή μορφή διαδρμής οπότε ο οικείος κατάλογος μπορεί να βρίσκεται στο /disk6/HU/07/jgillard.

Όποια και αν είναι η διαδρομή στον οικείο κατάλογό σας, δεν χρειάζεται να ανησυχείτε ιδιαίτερα. Η διαδρομή αποθηκεύεται στη μεταβλητή περιβάλλοντος HOME, για όποιο πρόγραμμα τη χρειάζεται. Με τη εντολή echo μπορείτε να δείτε το περιεχόμενο αυτής της μεταβλητής:

orlando:~> echo $HOME
/nethome/orlando
      

Μπορείτε να κάνετε ό,τι θέλετε στον οικείο κατάλογο σας. Μπορείτε να βάλετε όσα αρχεία και καταλόγους θέλετε, αν και το συνολικό μέγεθος των δεδομένων συνήθως περιορίζεται από το υλικό και το μέγεθος των διαμερισμάτων, και μερικές φορές από τον διαχειριστή του συστήματος που έχει επιβάλει σύστημα μεριδίων (quota). Παλιότερα, που οι δίσκοι ήταν ακριβοί, οι περιορισμοί χρήσης δίσκων ήταν συνηθισμένοι. Σήμερα, τέτοιοι περιορισμοί τίθενται μόνο σε μεγάλα συστήματα. Μπορείτε να δείτε εάν σας έχει τεθεί κάποιο όριο με την εντολή quota:

pierre@lamaison:/> quota -v
Diskquotas for user pierre (uid 501): none
      

Εάν έχουν τεθεί κάποιοι περιορισμοί, θα πάρετε μια λίστα των αντιστοίχων διαμερισμάτων και περιορισμών. Συνήθως επιτρέπεται η υπέρβαση των ορίων για κάποια περίοδο χάριτος. Περισσότερες πληροφορίες μπορείτε να βρείτε με χρήση των εντολών info quota ή man quota.

Όχι Quota;

Αν το σύστημά σας δεν μπορεί να βρει την εντολή quota, τότε δεν εφαρμόζει σύστημα περιορισμού στο σύστημα αρχείων.

Ο οικείος κατάλογος σημειώνεται με τη περισπωμένη (~), συντομογραφία για το /path_to_home/user_name. Όπως είπαμε το ίδιο όνομα διαδρομής βρίσκεται στη μεταβλητή περιβάλλοντος HOME. Μια απλή εφαρμογή: μετακίνηση από τον κατάλογο /var/music/albums/arno/2001 στον κατάλογο images στον οικείο κατάλογό σας με μια κομψή εντολή:

rom:/var/music/albums/arno/2001> cd ~/images

rom:~/images> pwd
/home/rom/images
      

Αργότερα στο κεφάλαιο θα μιλήσουμε για εντολές που θα σας βοηθήσουν να διαχειριστείτε τα αρχεία και τους καταλόγους σας.


3.2.4. Τα σημαντικότερα αρχεία διαμόρφωσης

Όπως είπαμε πριν, τα περισσότερα αρχεία διαμόρφωσης είναι αποθηκευμένα στον κατάλογο /etc. Τα περιεχόμενά τους μπορούμε να τα δούμε με την εντολή cat, που εμφανίζει αρχεία κειμένου στη προκαθορισμένη έξοδο (συνήθως η οθόνη), Η σύνταξη είναι απλή:

cat file1 file2 ... fileN

Σε αυτή την ενότητα θα προσπαθήσουμε να δώσουμε μια περίληψη των πιο συνηθισμένων αρχείων διαμόρφωσης. Η παρακάτω λίστα σίγουρα δεν είναι πλήρης. Η εγκατάσταση νέων λογισμικών έχει ως αποτέλεσμα την δημιουργία νέων αρχείων διαμόρφωσης στο /etc. Αν διαβάσετε ένα αρχείο διαμόρφωσης θα δείτε οτι είναι αρκετά καλά τεκμηριωμένα και αυτο-εξηγούμενο. Μερικά αρχεία έχουν και σελίδες man με επιπλέον τεκμηρίωση, όπως το man group.

Ένα ακόμα σημείο που διαχωρίζει το Linux από τα Windows είναι ο τρόπος που αποθηκεύονται και μπορούν να τροποποιηθούν οι ρυθμίσεις. Ενώ για ένα μέρος των ρυθμίσεων υπάρχει και τρόπος ρύθμισης από το γραφικό περιβάλλον, αυτός είναι ισοδύναμος με την τροποποίηση ενός αρχείου ρυθμίσεων. Το αρχείο ρυθμίσεων, βέβαια, δίνει πολύ περισσότερες δυνατότητες.

Πίνακας 3-3. Συνηθισμένα αρχεία διαμόρφωσης

Αρχείο

Πληροφορία/υπηρεσία

aliases

Αρχείο συνωνύμων ονομάτων ταχυδρομείου για τους διακομιστές Sendmail και Postfix. Ο διακομιστής mail είναι συνήθης πρακτική στο κόσμο του UNIX, και σχεδόν κάθε διανομή Linux έρχεται με το λογισμικό Sendmail. Σε αυτό το αρχείο τοπικά ονόματα χρηστών ταυτίζονται με διευθύνσεις E-mail, ή άλλες τοπικές διευθύνσεις.

apache ή httpd

Αρχεία διαμόρφωσης για τον διακομιστή ιστού (web server) Apache.

bashrc

Αρχεία διαμόρφωσης σε επίπεδο συστήματος για το Bourne Again SHell. Ορίζει λειτουργίες και συνώνυμα για όλους τους χρήστες. Άλλοι φλοιοί μπορεί να έχουν δικά τους αντίστοιχα αρχεία, όπως cshrc.

crontab και οι κατάλογοι cron.*

Διαμόρφωση εργασιών που πρέπει να εκτελούνται περιοδικά – εφεδρικά αντίγραφα, ενημερώσεις βάσεων δεδομένων του συστήματος, καθαρισμός του συστήματος, ανακύκλωση αρχείων καταγραφής, κλπ.

default

Προκαθορισμένες επιλογές για ορισμένες εντολές, όπως η useradd.

filesystems

Γνωστά συστήματα αρχείων: ext3, vfat, iso9660 etc.

fstab

Λίστα διαμερισμάτων και των σημείων προσάρτησής τους (mount points).

ftp*

Διαμόρφωση του διακομιστή ftp: ποιος μπορεί να συνδεθεί, ποια μέρη του συστήματος είναι προσβάσιμα, κλπ.

group

Αρχείο διαμόρφωσης των ομάδων χρηστών. Για τη τροποποίησή του χρησιμοποιούμε τις υπηρεσίες groupadd, groupmod και groupdel.

hosts

Λίστα των μηχανημάτων που μπορούν να προσπελαστούν μέσω δικτύου χωρίς τη χρήση υπηρεσίας ονομάτων πεδίων (DNS).

inittab

Πληροφορίες εκκίνησης: τύποι, αριθμός τερματικών κειμένου, κλπ.

issue

Πληροφορίες για τη διανομή (αριθμός διανομής, πληροφορίες πυρήνα).

ld.so.conf

Τοποθεσία των αρχείων βιβλιοθήκης.

lilo.conf, silo.conf, aboot.conf etc.

Πληροφορίες εκκίνησης για το LILO ( LInux Loader), παλιότερο σύστημα εκκίνησης που σταδιακά αντικαθίσταται από το GRUB.

logrotate.*

Ανακύκλωση των αρχείων καταγραφής, για να αποφεύγεται η συσσώρευση μεγάλου όγκου δεδομένων.

mail

Κατάλογος με οδηγίες για τη συμπεριφορά του διακομιστή ταχυδρομείου.

modules.conf

Διαμόρφωση των αρθρωμάτων που χειρίζονται ειδικούς οδηγούς συσκευών.

motd

Μήνυμα Της Ημέρας (Message Of The Day): Εμφανίζεται σε όποιον συνδέεται στο σύστημα (σε διεπαφή κειμένου), μπορεί να χρησιμοποιηθεί από το διαχειριστή για ανακοινώσεις σχετικές με το σύστημα.

mtab

Συστήματα αρχείων που είναι προσαρτημένα. Ποτέ μην τροποποιείτε αυτό το αρχείο.

nsswitch.conf

Σειρά με την οποία γίνεται η αναζήτηση ονομάτων hosts στο δίκτυο.

pam.d

Διαμόρφωση των αρθρωμάτων ταυροποίησης.

passwd

Λίστα των τοπικών χρηστών. Για τη τροποποίησή του χρησιμοποιούμε τις υπηρεσίες useradd, usermod και userdel.

printcap

Ξεπερασμένο αλλά ακόμη συχνά χρησιμοποιούμενο αρχείο διαμόρφωσης εκτυπωτών. Μην τροποποιείτε αυτό το αρχείο.

profile

Αρχείο διαμόρφωσης σε επίπεδο συστήματος για τις μεταβλητών περιβάλλοντος του φλοιού, προεπιλεγμένες ιδιότητες νέων αρχείων, κλπ.

rc*

Κατάλογοι που καθορίζουν τις ενεργές υπηρεσίες σε κάθε επίπεδο εκκίνησης.

resolv.conf

Σειρά επικοινωνίας με διακομιστές DNS (μόνο).

sendmail.cf

Κύριο αρχείο διαμόρφωσης για το διακομιστή Sendmail.

services

Κατάλογος των θυρών που αντιστοιχούν σε διάφορες υπηρεσίες (όχι μόνο υπάρχουσες).

sndconfig or sound

Κατάλογος διαμόρφωσης κάρτας ήχου και σχετικών συμβάντων.

ssh

Κατάλογος με αρχεία διαμόρφωσης για το secure shell (ssh) πελάτη και διακομιστή.

sysconfig

Κατάλογος με αρχεία διαμόρφωσης συσκευών: πληκτρολόγιο, ποντίκι κλπ (ειδικά στο RedHat)

X11

Κατάλογος διαμόρφωσης για τον διακομιστή γραφικής διεπαφής Χ11 (αλλού μπορεί να είναι Xfree). Επίσης περιλαμβάνονται γενικές κατευθύνσεις για τους διαθέσιμους διαχειριστές παραθύρων, για παράδειμα gdm, fvwm, twm, κλπ.

xinetd.* or inetd.conf

Αρχέια διαμόρφωσης των υπηρεσιών Διαδικτύου που εκτελούνται από τον δαίμονα Διαδικτύου του συστήματος (όχι από ανεξάρτητο δαίμονα).

Καθώς μελετούμε αυτό τον οδηγό θα μιλήσουμε με περισσότερες λεπτομέρειες γι' αυτά τα αρχεία.


3.2.5. Οι πιο συνηθισμένες συσκευές

Οι συσκευές, γενικά οτιδήποτε είναι συνδεδεμένο σε έναν υπολογιστή αλλά δεν είναι στη CPU, εμφανίζεται στο σύστημα σαν ένα αρχείο στον κατάλογο /dev. Ένα από τα πλεονεκτήματα διαχείρισης των συσκευών με το σύστημα του UNIX είναι οτι ούτε ο χρήστης ούτε το σύστημα χρειάζεται να ανησυχούν ιδιαίτερα για τις προδιαγραφές των συσκευών.

Οι νέοι χρήστες του Linux ή του UNIX γενικά εντυπωσιάζονται από τον μεγάλο αριθμό των νέων ονομάτων και εννοιών που πρέπει να μάθουν. Ο παρακάτω πίνακας ενισχύει αυτή την άποψη.

Πίνακας 3-4. Συνηθισμένες συσκευές

Όνομα

Συσκευή

cdrom

οδηγός CD

console

Τρέχον τερματικό (κονσόλα)

cua*

Συριακές θύρε.

dsp*

Συσκευές ψηφιακής επεξεργασίας σήματος (π.χ. ηχογράφηση)

.fd*

Τα περισσότερα είδη οδηγών δισκέτας, το προεπιλεγμένο είναι /dev/fd0, οδηγός για δισκέτες 1.44 MB

hd[a-t][1-16]

Τυπική υποστήριξη οδηγών σκληρών δίσκων IDE με μέγιστο αριθμό διαμερισμάτων

ir*

Οδηγοί υπερύθρων

isdn*

Διαχείριση συνδέσεων ISDN

js*

Joystick(s)

lp*

Εκτυπωτές

mem

Μνήμη

midi*

αναπαραγωγή midi

mixer* and music

Αφηρημένο μοντέλο mixer (συνθέτει και προσθέτει σήματα)

modem

Modem

mouse (also msmouse, logimouse, psmouse, input/mice, psaux)

Όλα τα είδη ποντικιών

null

Καλάθι αχρήστων χωρίς πάτο

par*

Υποστήριξη παράλληλων θυρών

pty*

Ψευδοτερματικά

radio*

Για ραδιο ερασιτέχνες (HAMs).

ram*

συσκευή εκκίνησης

sd*

Οδηγοί για δίσκους SCSI με τα διαμερίσματά τους

sequencer

Για εφαρμογές ήχου με χαρακτηριστικά synthesizer της κάρτας ήχου (MIDI-device controller)

tty*

Εικονικές κονσόλες που προσομοιώνουν τερματικά vt100 .

usb*

USB κάρτες και σαρωτές

video*

Κάρτες γραφικών και υποσήριξη video.


3.2.6. Τα πιο συνηθισμένα αρχεία μεταβλητών

Στο κατάλογο /var βρίσκουμε ένα σύνολο καταλόγων για την αποθήκευση μη-σταθερών δεδομένων (σε αντίθεση με εντολές, υπηρεσίες ή αρχεία διαμόρφωσης που αλλάζουν πολύ σπάνια ή καθόλου). Όλα τα αρχεία που μεταβάλλονται συχνά όπως αρχεία καταγραφής, ταχυδρομικές θυρίδες, αρχεία κλειδωμάτων, διαχειριστές για ουρές εκτυπωτών κλπ. βρίσκονται σε κάποιο υποκατάλογο του /var.

Για λόγους ασφαλείας κρατούμε αυτά τα αρχεία ξεχωριστά από τα αρχεία συστήματος, έτσι ώστε να τα ελέγχουμε καλύτερα και να μεταβάλλουμε τις πολιτικές ασφαλείας και πρόσβασης αν είναι απαραίτητο. Πολλά από αυτά τα αρχεία απαιτούν περισσότερες άδειες από οτι συνήθως, όπως το /var/tmp, που πρέπει να μπορεί να γράφεται από όλους. Σε αυτό το τμήμα αναμένεται μεγάλη δραστηριότητα χρηστών, αν το σύστημά μας είναι διακομιστής, ακόμη και από ανώνυμους χρήστες του Διαδικτύου (αν υπάρχει δυνατότητα πρόσβασης). Γι' αυτό το λόγο σε μεγάλα συστήματα ο κατάλογος /var με όλους τους υπο-καταλόγους, βρίσκεται συνήθως σε ξεχωριστό διαμέρισμα. Με αυτό το τρόπο, μειώνουμε τον κίνδυνο ενός mail bomb, για παράδειγμα, που θα γεμίσει το σύστημα αρχείων που περιέχει σημαντικότερα πράγματα, όπως προγράμματα και αρχεία διαμόρφωσης.

/var/tmp και /tmp

Τα αρχεία στο /tmp μπορεί να διαγραφούν χωρίς ειδοποίηση, από απλές εργασίες του συστήματος ή από την επανεκκίνηση του συστήματος. Σε μερικά (ειδικά) συστήματα και το /var/tmp μπορεί να φερθεί απρόβλεπτα. Παρ' όλα αυτά, αφού κάτι τέτοιο δεν είναι γενικευμένο, συνιστούμε την αποθήκευση προσωρινών αρχείων στο /var/tmp. Αν δεν είστε σίγουροι ρωτήστε τον διαχειριστή του συστήματός σας. Αν διαχειρίζεστε μόνοι σας το σύστημά σας μπορείτε να είστε λογικά σίγουροι οτι πρόκειται για ασφαλές σημείο, εκτός και αν μόνοι σας αλλάξετε τα settings στο /var/tmp (σαν root, ο απλός χρήστης δεν μπορεί να το κάνει).

Ότι και αν κάνετε, προσπαθήστε να ακολουθείτε τα δικαιώματα ενός κανονικού χρήστη – μην αποθηκεύετε αρχεία στο κατάλογο ρίζα (/) του συστήματος αρχείων, ούτε στο /usr ή σε άλλο ειδικό μέρος του συστήματος. Αυτό περιορίζει σημαντικά τη πρόσβασή σας σε μη-ασφαλή σημεία του συστήματος αρχείων.

Ένα από τα κύρια συστήματα ασφάλειας του UNIX, που υλοποιείται φυσικά και στο Linux, είναι η υπηρεσία καταγραφής, που καταγράφει τις πράξεις όλων των χρηστών, τις διεργασίες, τα συμβάντα κλπ. Το αρχείο διαμόρφωσης του επονομαζόμενου syslogdaemon καθορίζει πόσο διάστημα κρατείται αυτή η πληροφορία. Η προεπιλεγμένη θέση είναι στο /var/log, με διαφορετικά αρχεία για καταγραφή πρόσβασης, καταγραφή διακομιστή, μηνύματα του συστήματος κλπ.

Στο /var συνήθως βρίσκουμε δεδομένα διακομιστή, που κρατούνται εδώ, ξεχωριστά από άλλα κρίσιμα δεδομένα όπως τα προγράμματα διακομιστή και τα αρχεία διαμόρφωσης του. Ένα τυπικό παράδειγμα σε συστήματα Linux είναι το /var/www, που περιέχει τις ίδιες τις σελίδες HTML, scripts και εικόνες που διανέμει ο διακομιστής. Το δένδρο FTP ενός διακομιστή FTP (τα δεδομένα που μπορούν να μεταφορτωθούν σε ένα απομακρυσμένο πελάτη) είναι καλύτερα να κρατείται σε υπο-κατάλογο του /var. Επειδή αυτά τα δεδομένα είναι δημόσια προσβάσιμα από ανώνυμους χρήστες και συχνά μεταβάλλονται από ανώνυμους χρήστες, είναι ασφαλέστερο να κρατούμε αυτά τα δεδομένα μακριά από ευαίσθητα δεδομένα..

Στις περισσότερες εγκαταστάσεις σταθμών εργασίας το /var/spool θα περιέχει τουλάχιστο ένα at και ένα cron κατάλογο, όπου βρίσκονται χρονο-πορογραμματισμένες εργασίες. Σε περιβάλλοντα γραφείου αυτοί οι κατάλογοι συνήθως περιέχουν και το lpd, που κρατά τις ουρές εκτυπωτών και τα αρχεία διαμόρφωσης και καταγραφής.

Σε συστήματα διακομιστών γενικά θα βρούμε το /var/spool/mail, που περιέχει εισερχόμενο ταχυδρομείο για τοπικούς χρήστες, ένα αρχείο ανά χρήστη, το "inbox" του χρήστη. Ένας σχετικός κατάλογος είναι το mqueue, η περιοχή του spooler (ουράς) για τα μη-αποσταλέντα μηνύματα. Αυτά τα μέρη του συστήματος είναι πολύ δραστήρια αν υπάρχουν πολλοί χρήστες. Οι νέοι διακομιστές επίσης χρησιμοποιούν τον κατάλογο /var/spool για τη διαχείριση μεγάλων μηνυμάτων.


3.3. Διαχείριση αρχείων

3.3.1. Βλέποντας τις ιδιότητες των αρχείων

3.3.1.1. Περισσότερα για το ls

Εκτός από το όνομα του αρχείου, η εντολή ls μπορεί να δώσει πολλές επιπλέον πληροφορίες όπως τον τύπο αρχείου. Μπορεί να δείξει τις άδειες πρόσβασης ενός αρχείου, το μέγεθός του, το inode, την ημερομηνία και ώρα δημιουργίας, τους ιδιοκτήτες και το πλήθος των συνδέσμων στο αρχείο. Προσθέτοντας την επιλογή -a στο ls, εμφανίζονται και τα κρυφά αρχεία που το όνομά τους αρχίζει με τελεία (.) π.χ τα αρχεία ρυθμίσεων του οικείου καταλόγου. Μετά από ένα διάστημα χρήσης ενός συστήματος, παρατηρούμε ότι έχουν δημιουργηθεί δεκάδες αρχείων και καταλόγων που δεν εμφανίζονται αυτόματα. Επιπλέον κάθε κατάλογος περιέχει ένα αρχείο που ονομάζεται με μια τελεία (.) και ένα με δύο τελείες (..) τα οποία χρησιμοποιούνται σε συνδυασμό με το inode για τον καθορισμό της θέσης του στη δομή καταλόγων του συστήματος.

Καλό είναι να διαβάσετε τα κείμενα τεκμηρίωσης (Info) σχετικά με το ls επειδή είναι μια συχνά χρησιμοποιούμενη εντολή με πολύ χρήσιμες επιλογές. Οι επιλογές μπορούν να συνδυαστούν όπως οι περισσότερες εντολές του UNIX. Ένας συχνός συνδυασμός είναι το ls -al, που εμφανίζει μια λίστα (-l) με τα αρχεία και τις ιδιότητές τους όπως και τους προορισμούς που δείχνουν οι σύνδεσμοι. Η ls -latr εμφανίζει τα ίδια αρχεία, όμως με την αντίστροφη σειρά σε σχέση με την τελευταία τροποποίηση έτσι ώστε το πιο πρόσφατα τροποποιημένο αρχείο να βρίσκεται στον τέλος της λίστας. Η επιλογή t ταξινόμηση ανάλογα με την ημερομηνία τροποποίησης) και r (αντιστροφή σειράς ταξινόμησης). Μερικά παραδείγματα

krissie:~/mp3> ls
Albums/  Radio/  Singles/  gene/  index.html

krissie:~/mp3> ls -a
./   .thumbs  Radio     gene/
../  Albums/  Singles/  index.html

krissie:~/mp3> ls -l Radio/
total 8
drwxr-xr-x    2 krissie krissie  4096 Oct 30  1999 Carolina/
drwxr-xr-x    2 krissie krissie  4096 Sep 24  1999 Slashdot/

krissie:~/mp3> ls -ld Radio/
drwxr-xr-x    4 krissie krissie  4096 Oct 30  1999 Radio/

krissie:~/mp3> ls -ltr
total 20
drwxr-xr-x    4 krissie krissie  4096 Oct 30  1999 Radio/
-rw-r--r--    1 krissie krissie   453 Jan  7  2001 index.html
drwxrwxr-x   30 krissie krissie  4096 Oct 20 17:32 Singles/
drwxr-xr-x    2 krissie krissie  4096 Dec  4 23:22 gene/
drwxrwxr-x   13 krissie krissie  4096 Dec 21 11:40 Albums/
      

Στο τελευταίο παράδειγμα εμφανίζετε μία λίστα που περιέχει τα περιεχόμενα του φακέλου mp3, ο οποίος βρίσκεται στον αρχικό κατάλογο του χρήστη krissie με αύξουσα ημερομηνία τροποποίησης (δηλαδή πρώτα εμφανίζεται αυτό που τροποποιήθηκε παλαιότερα).

Όπως αναφέρθηκε και σε προηγούμενη ενότητα, ο πρώτος χαρακτήρας κάθε γραμμής δηλώνει τον τύπο του συγκεκριμένου στοιχείου. Οι επόμενοι 9 χαρακτήρες αντιστοιχούν στα δικαιώματα που έχουν οι διάφοροι χρήστες σε αυτό το στοιχείο (εξηγούνται αναλυτικά παρακάτω). Επίσης, η λίστα δίνει πληροφορίες για τον ιδιοκτήτη και την ομάδα στην οποία ανήκει το αρχείο, καθώς και για την ημερομηνία τροποποίησής του.

Υπάρχει επίσης η δυνατότητα εκτέλεσης της εντολής ls με την επιλογή F, η οποία προσαρτά έναν χαρακτήρα στο τέλος κάθε γραμμής (επίθεμα), ο οποίος δηλώνει τον τύπο του κάθε στοιχείου. Στον πίνακα που ακολουθεί συνοψίζονται τα επιθέματα αυτά όπως απαντώνται σε μια τυπική εγκατάσταση του Linux.

Πίνακας 3-6. Προεπιλεγμένο σχήμα επιθεμάτων ls

Χαρακτήρας

Τύπος Αρχείου

τίποτε

κανονικό αρχείο

/

κατάλογος

*

εκτελέσιμο αρχείο

@

σύνδεσμος

=

υποδοχή

|

ονομασμένη σωλήνωση

Στις περισσότερες διανομές Linux το ls έχει γίνει συνώνυμο του color-ls. Αυτό επιτρέπει την αναγνώριση του τύπου αρχείου χωρίς την ανάγκη χρήσης κάποιας επιλογής με το ls. Επιτυγχάνεται αναθέτοντας σε κάθε τύπο αρχείου διαφορετικό χρώμα. Για αλλαγή των χρωμάτων δέιτε την εντολή dircolors. Τα προεπιλεγμένα χρώματα είναι:

Πίνακας 3-5. Color-ls προεπιλεγμένο σχήμα

Χρώμα

Τύπος αρχείου

μπλε

κατάλογοι

κόκκινο

συμπιεσμένα αρχεία

άσπρο

αρχεία κειμένου

ροζ

εικόνες

γαλάζιο

σύνδεσμοι

κίτρινο

συσκευές

πράσινο

εκτελέσιμα

κόκκινο που αναβοσβήνει

σπασμένοι σύνδεσμοι

Περισσότερες πληροφορίες βρίσκονται με χρήση της man. Η ίδια πληροφορία παλαιότερα εμφανιζόταν χρησιμοποιώντας επιθέματα (καταλήξεις) για κάθε μη τυποποιημένο τύπο αρχείου. Σε μονοχρωμία (π.χ στην εκτύπωση) και για διασφάλιση της αναγνωρισιμότητας το σχήμα αυτό είναι ακόμη σε χρήση:

Μια πλήρη περιγραφή της λειτουργικότητας και των χαρακτηριστικών της εντολής ls μπορεί να βρεθεί με χρήση των κειμένων τεκμηρίωσης με info coreutils ls.


3.3.1.2. Περισσότερα εργαλεία

Για να μάθουμε περισσότερα για το είδος των δεδομένων που περιέχουν τα αρχεία χρησιμοποιούμε την εντολή file. Με τη χρήση κάποιων τεστ που ελέγχουν τις ιδιότητες του αρχείου, τη χρήση κάποιων “μαγικών αριθμών” και γλωσσικών ελέγχων η file προσπαθεί να κάνει μια πρόβλεψη σχετικά με τη δομή του αρχείου. Μερικά παραδείγματα :

mike:~> file Documents/
Documents/: directory

mike:~> file high-tech-stats.pdf
high-tech-stats.pdf: PDF document, version 1.2

mike:~> file Nari-288.rm
Nari-288.rm: RealMedia file

mike:~> file bijlage10.sdw
bijlage10.sdw: Microsoft Office Document

mike:~> file logo.xcf
logo.xcf: GIMP XCF image data, version 0, 150 x 38, RGB Color

mike:~> file cv.txt
cv.txt: ISO-8859 text

mike:~> file image.png
image.png: PNG image data, 616 x 862, 8-bit grayscale, non-interlaced

mike:~> file figure
figure: ASCII text

mike:~> file me+tux.jpg
me+tux.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI),
            "28 Jun 1999", 144 x 144

mike:~> file 42.zip.gz
42.zip.gz: gzip compressed data, deflated, original filename,
         `42.zip', last modified: Thu Nov  1 23:45:39 2001, os: Unix

mike:~> file vi.gif
vi.gif: GIF image data, version 89a, 88 x 31

mike:~> file slide1
slide1: HTML document text

mike:~> file template.xls
template.xls: Microsoft Office Document

mike:~> file abook.ps
abook.ps: PostScript document text conforming at level 2.0

mike:~> file /dev/log
/dev/log: socket

mike:~> file /dev/hda
/dev/hda: block special (3/0)

Η εντολή file έχει μια σειρά επιλογών μεταξύ των οποίων και η -z για τον έλεγχο συμπιεσμένων αρχείων. Δείτε το info file για αναλυτική περιγραφή. Να έχετε υπόψη ότι τα αποτελέσματα της file δεν παρά μια απλή πρόβλεψη. Δηλαδή η file μπορεί να ξεγελαστεί.

Γιατί όλη αυτή η φασαρία με τους τύπους και τη δομή των αρχείων;

Σύντομα θα συζητήσουμε μερικά εργαλεία γραμμής εντολών για την αναζήτηση σε αρχεία απλού κειμένου (plain text files). Αυτά τα εργαλεία δεν λειτουργούν όταν χρησιμοποιούνται με λάθος τύπο αρχείου. Στη χειρότερη περίπτωση θα έχουμε αστοχία του τερματικού και/ή πολλά beep. Εάν συμβεί κάτι τέτοιο κλείστε το παράθυρο τερματικούl και ξεκινήστε νέο. Προσπαθήστε να το αποφύγετε επειδή είναι πολύ ενοχλητικό για τους υπόλοιπους.


3.3.2. Δημιουργία και διαγραφή αρχείων και καταλόγων

3.3.2.1. Να τα κάνουμε άνω-κάτω...

... δεν είναι ιδιαίτερα δύσκολο. Σήμερα σχεδόν κάθε σύστημα είναι δικτυωμένο, έτσι φυσιολογικά αντιγράφονται αρχεία από τη μια μηχανή στην άλλη. Ειδικά όταν εργάζεσαι με παραθυρικό περιβάλλον, η δημιουργία νέων αρχείων είναι αστεία υπόθεση και πολλές φορές γίνεται χωρίς την έγκριση του χρήστη. Για να γίνει κατανοητό το πρόβλημα, ας εξετάσουμε το πλήρες περιεχόμενο του οικείου καταλόγου:

[newuser@blob user]$ ls -al
total 32
drwx------   3 user     user        4096 Jan 16 13:32 .
drwxr-xr-x   6 root     root        4096 Jan 16 13:32 ..
-rw-r--r--   1 user     user      24 Jan 16 13:32 .bash_logout
-rw-r--r--   1 user     user     191 Jan 16 13:32 .bash_profile
-rw-r--r--   1 user     user     124 Jan 16 13:32 .bashrc
drwxr-xr-x   3 user     user    4096 Jan 16 13:32 .kde
-rw-r--r--   1 user     user    3511 Jan 16 13:32 .screenrc
-rw-------   1 user     user      61 Jan 16 13:32 .xauthDqztLr
      

Με την πρώτη ματιά το περιεχόμενο ενός παλαιού οικείου καταλόγου δε δείχνει πολύ χειρότερο:

olduser:~> ls
app-defaults/ crossover/   Fvwm@     mp3/      OpenOffice.org638/
articles/     Desktop/     GNUstep/  Nautilus/ staroffice6.0/
bin/          Desktop1/    images/   nqc/      training/
brol/         desktoptest/ Machines@ ns_imap/  webstart/
C/            Documents/   mail/     nsmail/   xml/
closed/       Emacs@       Mail/     office52/ Xrootenv.0
      

Αλλά όταν συμπεριληφθούν όλοι οι κατάλογοι και τα αρχεία που αρχίζουν με τελεία (.) εμφανίζονται 185 στοιχεία σε αυτόν τον κατάλογο. Αυτό συμβαίνει επειδή οι περισσότερες εφαρμογές έχουν το δικό τους κατάλογο και/ή αρχεία, συμπεριλαμβάνοντας ρυθμίσεις ειδικά για τον κάθε χρήστη, στον οικείο κατάλογό του. Συνήθως αυτά τα αρχεία δημιουργούνται την πρώτη φορά που εκκινείται μια εφαρμογή. Σε κάποιες περιπτώσεις θα ενημερωθείτε όταν χρειάζεται να δημιουργηθεί ένας νέος κατάλογος, αλλά τις περισσότερες φορές όλα θα γίνουν αυτόματα.

Επιπλέον, νέα αρχεία δημιουργούνται συνεχώς επειδή οι χρήστες θέλουν να αποθηκεύσουν, να κρατήσουν διαφορετικές εκδόσεις από τις εργασίες τους, να χρησιμοποιήσουν εφαρμογές Διαδικτύου, να μεταφορτώσουν αρχεία και συνημμένα στο τοπικό μηχάνημα. Δε σταματάει ποτέ και είναι ξεκάθαρο ότι είναι απαραίτητο ένα σχήμα για την επισκόπηση όλων αυτών.

Στην επόμενη παράγραφο, θα συζητήσουμε τους τρόπους για να διατηρούμε τάξη. Αναφέρουμε μόνο εργαλεία κειμένου διαθέσιμα στο φλοιό, μια και τα γραφικά εργαλεία έχουν την ίδια αίσθηση και όψη με το γνωστό περιβάλλον διαχείρισης των MS Windows, συμπεριλαμβάνοντας λειτουργίες βοήθειας και άλλα χαρακτηριστικά αναμενόμενα από αυτού του είδους τις εφαρμογές. Η παρακάτω λίστα είναι μια ανασκόπηση των πιο δημοφιλών διαχειριστών αρχείων για GNU/Linux. Οι περισσότεροι διαχειριστές αρχείων μπορούν να ξεκινήσουν από το μενού της επιφάνειας εργασίας, η κάνοντας κλικ στο εικονίδιο του βασικού καταλόγου, ή από τη γραμμή εντολών, χρησιμοποιώντας τις παρακάτω εντολές:

Αυτές οι εφαρμογές αξίζουν τη δοκιμή και συνήθως εντυπωσιάζουν τους νέους χρήστες Linux, μόνο και μόνο επειδή υπάρχει τόσο μεγάλη ποικιλία: Αυτά είναι μόνο τα δημοφιλή εργαλεία για τη διαχείριση των αρχείων και των καταλόγων, αλλά υπάρχουν πολλά ακόμη έργα σε ανάπτυξη. Τώρα ας ψάξουμε το εσωτερικό τους και να δούμε πως αυτά τα γραφικά εργαλεία χρησιμοποιούν απλές εντολές UNIX


3.3.2.2. Τα εργαλεία

3.3.2.2.1. Δημιουργία καταλόγων (mkdir)

Ένας τρόπος για να διατηρήσουμε τα πράγματα σε τάξη, είναι να δοθεί στα αρχεία κάποια συγκεκριμένη θέση δημιουργώντας καταλόγους και υπο-καταλόγους. Αυτό γίνεται με την εντολή mkdir:

richard:~> mkdir archive

richard:~> ls -ld archive
drwxrwxrwx  2 richard richard           4096 Jan 13 14:09 archive/
      

Η δημιουργία καταλόγων και υπο-καταλόγων με ένα βήμα γίνεται χρησιμοποιώντας το διακόπτη -p:

richard:~> cd archive

richard:~/archive> mkdir 1999 2000 2001

richard:~/archive> ls -F
1999/  2000/  2001/

richard:~/archive> mkdir 2001/reports/Restaurants-Michelin/
mkdir: cannot create directory `2001/reports/Restaurants-Michelin/':
No such file or directory

richard:~/archive> mkdir -p 2001/reports/Restaurants-Michelin/

richard:~/archive> ls 2001/reports/
Restaurants-Michelin/
      

Εάν το νέο αρχείο χρειάζεται άλλες άδειες πρόσβασης από τα προεπιλεγμένες, αυτές μπορούν να ορισθούν με ένα βήμα χρησιμοποιώντας την mkdir (δες τις σελίδες τεκμηρίωσης για λεπτομέρειες). Πρόκειται να συζητήσουμε τις άδειες πρόσβασης στο επόμενο κεφάλαιο, στην ασφάλεια αρχείων.

Το όνομα ενός καταλόγου πρέπει να συμφωνεί με τους ίδιους κανόνες που έχουν οριστεί για τα κανονικά αρχεία. Ένας από τους πιο σημαντικούς περιορισμούς είναι ότι δε μπορεί να υπάρχουν δύο αρχεία με το ίδιο όνομα στον ίδιο κατάλογο (υπ όψη ότι το Linux όπως και το Unix είναι case sensitive λειτουργικά συστήματα, δηλαδή ξεχωρίζουν πεζά και κεφαλαία γράμματα). Δεν υπάρχουν όρια σε σχέση με το μέγεθος του ονόματος ενός αρχείου, αλλά καλό είναι να είναι μικρότερο από 80 χαρακτήρες για να χωράει σε μια γραμμή εντολών. Μπορεί να χρησιμοποιηθεί οποιοσδήποτε χαρακτήρας, καλό είναι να αποφεύγονται οι χαρακτήρες που έχουν ειδική σημασία για το κέλυφος (δες στο Παράρτημα C.)


3.3.2.2.2. Μετακίνηση αρχείων

Τώρα που έχουμε δομήσει τον οικείο κατάλογο, είναι ώρα να τον ξεκαθαρίσουμε χρησιμοποιώντας την εντολή mv:

richard:~/archive> mv ../report[1-4].doc reports/Restaurants-Michelin/
      

Η παραπάνω εντολή μετακινεί τα αρχεία doc από ένα επίπεδο πάνω από το τον τρέχων φάκελο, στο φάκελο reports/Restaurants-Michelin/

Αυτή η εντολή είναι επίσης χρήσιμη όταν θέλουμε να μετονομάσουμε αρχεία:

richard:~> ls To_Do
-rw-rw-r--    1 richard richard      2534 Jan 15 12:39 To_Do

richard:~> mv To_Do done

richard:~> ls -l done
-rw-rw-r--    1 richard richard      2534 Jan 15 12:39 done
      

Είναι φανερό ότι αλλάζει μόνο το όνομα του αρχείου και ότι όλες οι ιδιότητες παραμένουν ίδιες.

Αναλυτικότερα για τη σύνταξη και τα χαρακτηριστικά της εντολής δείτε στις σελίδες οδηγιών και τεκμηρίωσης. Η χρήση αυτής της βοήθειας πρέπει να είναι η πρώτη αντίδραση όταν αντιμετωπίζεται ένα πρόβλημα. Πολύ πιθανόν η απάντηση να βρίσκεται στην τεκμηρίωση του συστήματος. Ακόμη και έμπειροι χρήστες χρησιμοποιούν την man καθημερινά, άρα οι νέοι πρέπει να κάνουν χρήση συνεχώς. Μετά από λίγο θα γνωρίζετε τους πιο χρήσιμους διακόπτες στις πιο κοινές εντολές, αλλά θα υπάρχει πάντα η ανάγκη της τεκμηρίωσης σαν βασική πηγή πληροφόρησης. Σημειώστε ότι η πληροφόρηση που περιέχεται στα HOWTOs, FAQs, σελίδες οδηγιών και ούτω καθ' εξής σιγά σιγά ενσωματώνεται στις σελίδες τεκμηρίωσης, που είναι σήμερα η πιο επίκαιρη πηγή online τεκμηρίωσης.


3.3.2.2.3. Αντιγραφή αρχείων

Η αντιγραφή αρχείων και καταλόγων γίνεται με χρήση της εντολής cp. Μια χρήσιμη επιλογή είναι η αναδρομική αντιγραφή χρησιμοποιώντας τον διακόπτη -R (αντιγραφή όλων των καταλόγων που περιλαμβάνονται στα αρχεία προέλευσης. Δηλαδή, αντιγράφει όλα τα αρχεία, τους καταλόγους και τα περιεχόμενά τους). Η σύνταξη είναι της μορφής

cp [-R] fromfile tofile

Π.χ. ο χρήστης newguy, που θέλει τις ίδιες ρυθμίσεις για τη επιφάνεια εργασίας Gnome με του χρήστη oldguy, μπορεί να το επιτύχει αντιγράφοντας τον βασικό κατάλογο του newguy:

victor:~> cp -R ../oldguy/.gnome/ .
      

Αυτό εμφανίζει κάποια μηνύματα λάθους μεταξύ των οποίων μηνύματα που αφορούν τις άδειες πρόσβασης των αρχείων, αλλά όλα έχουν να κάνουν με τα ιδιωτικά αρχεία τα οποία ο newguy δε τα χρειάζεται ούτως ή άλλως. Θα συζητήσουμε για την αλλαγή αδειών παρακάτω.


3.3.2.2.4. Διαγραφή αρχείων

Για τη διαγραφή αρχείων χρησιμοποιείται η εντολή rm και η εντολή rmdir για τη διαγραφή καταλόγων. (Μπορείτε να δείτε εάν ένας κατάλογος είναι κενός ή όχι με τη χρήση της ls -a). Η εντολή rm έχει επιλογές για την διαγραφή μη κενών καταλόγων με όλους τους υπο-καταλόγους τους (δείτε τις σελίδες τεκμηρίωσης, γι' αυτές τις επικίνδυνες επιλογές).

Πόσο άδειος μπορεί να είναι ένας κατάλογος;

Είναι φυσιολογικό οι κατάλογοι (.) και (..) να μη μπορούν να διαγραφούν μιας και καθορίζουν την ιεραρχία του συστήματος αρχείων.

Στο Linux, όπως και στο UNIX, δεν υπάρχει κάδος ανακύκλωσης – τουλάχιστον όχι για το φλοιό, παρόλο που υπάρχουν αρκετές λύσεις στο γραφικό περιβάλλον. Έτσι εάν διαγραφεί ένα αρχείο δεν υπάρχει τρόπος να επανακτηθεί εκτός εάν υπάρχουν αντίγραφα, ή είστε γρήγορος και έχετε καλό διαχειριστή συστήματος. Για την προστασία του αρχάριου μπορεί να χρησιμοποιηθεί ο διακόπτης -i για αλληλεπιδραστική συμπεριφορά των εντολών rm, cp και mv. Σε αυτή την περίπτωση το σύστημα δεν ενεργεί άμεσα αλλά ζητάει επιβεβαίωση και χρειάζεται να πατήσουμε επιπλέον το πλήκτρο Enter για να γίνει η ζημιά:

mary:~> rm -ri archive/
rm: descend into directory `archive'? y
rm: descend into directory `archive/reports'? y
rm: remove directory `archive/reports'? y
rm: descend into directory `archive/backup'? y
rm: remove `archive/backup/sysbup200112.tar'? y
rm: remove directory `archive/backup'? y
rm: remove directory `archive'? y
      

Θα συζητήσουμε πως μπορεί να γίνει αυτή η επιλογή προκαθορισμένη στο Κεφάλαιο 7 που εξετάζει την προσαρμογή του φλοιού στις απαιτήσεις του χρήστη.


3.3.3. Εύρεση αρχείων

3.3.3.1. Χρήση των χαρακτηριστικών του φλοιού

Στο παράδειγμα μετακίνησης αρχείων είδαμε ότι ο φλοιός μπορεί να χειριστεί πολλά αρχεία με μία εντολή. Σε αυτό το παράδειγμα ο φλοιός βρήκε αυτόματα τι εννοεί ο χρήστης με τους χαρακτήρες μεταξύ των “[“ και “]”. Ο φλοιός μπορεί να αντικαταστήσει περιοχή αριθμών και κεφαλαίους ή πεζούς χαρακτήρες αντίστοιχα. Επίσης μπορεί να αντικαταστήσει πολλούς χαρακτήρες με έναν αστερίσκο ή έναν μόνο χαρακτήρα με ερωτηματικό.

Όλες οι δυνατότητες αντικατάστασης μπορούν να χρησιμοποιηθούν ταυτόχρονα. Ο φλοιός Bash π.χ. δεν αντιμετωπίζει πρόβλημα με εκφράσεις όπως ls dirname/*/*/*[2-3].

Σε άλλους φλοιούς, ο αστερίσκος χρησιμοποιείται για την ελαχιστοποίηση της πληκτρολόγησης: ο χρήστης μπορεί να καταχωρήσει cd dir* αντί για cd directory. Στο Bash όμως, αυτό δεν είναι απαραίτητο γιατί το κέλυφος GNU έχει μια ιδιότητα που λέγεται file name completion (αυτόματη συμπλήρωση ονόματος). Δηλαδή όταν πληκτρολογηθούν οι πρώτοι χαρακτήρες μιας εντολής (σε οποιοδήποτε κατάλογο και αν είστε) ή αρχείου (του τρέχοντος καταλόγου) και δεν υφίσταται θέμα παρεξήγησης το κέλυφος αντιλαμβάνεται περί τίνος πρόκειται. Π.χ. Σε έναν κατάλογο με πολλά αρχεία, μπορείτε να εξετάσετε εάν υπάρχουν αρχεία που το όνομά τους αρχίζει από το γράμμα Α πληκτρολογώντας την εντολή ls A και μετά πατώντας δύο φορές το πλήκτρο Tab αντί για το Enter. Εάν υπάρχει μόνο ένα αρχείο που ξεκινάει από με "A", αυτό θα φανεί άμεσα ως όρισμα στην ls (ή όποια άλλη εντολή φλοιού).


3.3.3.2. Which

Ένας απλός τρόπος εύρεσης αρχείων είναι με την εντολή which, όπου μπορούμε να ψάξουμε για ένα αρχείο στους καταλόγους που περιλαμβάνονται στη μεταβλητή περιβάλλοντος (σε κάθε κατάλογο που ορίζεται στην διαδρομή $PATH). Επειδή όμως η μεταβλητή αφορά μόνο καταλόγους που περιέχουν εκτελέσιμα αρχεία, η which δεν είναι χρήσιμη για κανονικά αρχεία. Είναι όμως χρήσιμη για την επίλυση προβλημάτων τους είδους "Command not Found". Στο παράδειγμα παρακάτω η χρήστης tina δε μπορεί να χρησιμοποιήσει το πρόγραμμα acroread, ενώ η συνάδελφός της δεν έχει δυσκολίες στο ίδιο σύστημα. Το πρόβλημα είναι της ίδιας μορφής με του PATH στο προηγούμενο μέρος: Η συνάδελφος της Tina της λέει ότι μπορεί να βρει το ζητούμενο πρόγραμμα στη θέση /opt/acroread/bin, αλλά αυτός ο κατάλογος δεν είναι στις δικές της διαδρομές:

tina:~> which acroread
/usr/bin/which: no acroread in (/bin:/usr/bin:/usr/bin/X11)
      

Το πρόβλημα αντιμετωπίζεται είτε δίνοντας τη πλήρη διαδρομή της εντολής ή επαν-εξάγοντας το περιεχόμενο της μεταβλητής PATH αλλά προσθέτοντας τη νέα διαδρομή:

tina:~> export PATH=$PATH:/opt/acroread/bin

tina:~> echo $PATH
/bin:/usr/bin:/usr/bin/X11:/opt/acroread/bin
      

Η which επίσης ελέγχει εάν μια εντολή είναι ψευδώνυμο κάποιας άλλης:

gerrit:~> which -a ls
ls is aliased to `ls -F --color=auto'
ls is /bin/ls
      

3.3.3.3. Find και locate

Πρόκειται για δύο εντολές με γενικότερη χρησιμότητα σε σχέση με τη which, οι οποίες μπορούν να χρησιμοποιηθούν για τον εντοπισμό οποιουδήποτε αρχείου. Η εντολή find επιτρέπει την αναζήτηση αρχείων με κριτήριο όχι μόνο το όνομα, αλλά και το μέγεθος, την ημερομηνία τελευταίας τροποποίησης και άλλων ιδιοτήτων. Ο πιο συνηθισμένος τρόπος για την αναζήτηση αρχείου είναι:

find <path> -name <searchstring>

Αυτό μπορεί να μεταφραστεί σαν "Ψάξε σε όλα τα αρχεία και τους υπο-καταλόγους που περιέχονται σε μια δεδομένη διαδρομή και εμφάνισε τα ονόματα των αρχείων που περιέχουν τους χαρακτήρες προς εύρεση στο όνομά τους (όχι στο περιεχόμενό τους)"

Για παράδειγμα, η εντολή:

find /var/www/html -name index2.php

θα εντοπίσει και θα εμφανίσει τις διαδρομές σε όλα τα αρχεία με όνομα index2.php που βρίσκονται μέσα στον κατάλογο /var/www/html και τους υποκαταλόγους του.

Μια άλλη εφαρμογή της find είναι η αναζήτηση αρχείων συγκεκριμένου μεγέθους όπως στο παρακάτω παράδειγμα όπου ο χρήστης peter θέλει να βρει όλα τα αρχεία, που είναι μεγαλύτερα των 5 MB, στον τρέχοντα κατάλογο ή στους υπο-καταλόγους του:

peter:~> find . -size +5000k
psychotic_chaos.mp3
      

Εάν ψάξετε στις σελίδες οδηγιών θα δείτε ότι η find εκτελεί επίσης λειτουργίες πάνω στα επιστρεφόμενα αρχεία. Ένα συνηθισμένο παράδειγμα είναι η διαγραφή αρχείων. Είναι καλύτερα πρώτα να δοκιμάσετε ότι τα σωστά αρχεία έχουν επιλεγεί (χωρίς τη χρήση της επιλογής -exec) προτού η εντολή διαγράψει τα επιλεγμένα αρχεία. Παρακάτω αναζητούνται αρχεία που τελειώνουν σε .tmp:

peter:~>  find . -name "*.tmp" -exec rm {} \;

peter:~>
      

Βελτιστοποίηση!

Αυτή η εντολή θα καλέσει τη rm όσες φορές βρεθεί ένα αρχείο που πληροί το κριτήριο. Στη χειρότερη περίπτωση αυτό μπορεί να είναι χιλιάδες ή εκατομμύρια περιπτώσεις, οπότε θα υπάρξει φόρτος στο σύστημά σας.

Ένας πιο αποτελεσματικός τρόπος εργασίας είναι με τη χρήση σωλήνωσης (|) και του εργαλείου xarg με το rm σαν όρισμα. Έτσι η rm καλείται όταν ολοκληρωθεί το πρώτο μέρος της εντολής αντί για κάθε αρχείο ξεχωριστά. Δες το Κεφάλαιο 5 για περισσότερες πληροφορίες σε σχέση με τη χρήση της ανακατεύθυνσης Εισόδου/Εξόδου.

Σε αντίθεση με την εντολή find, η οποία κάνει αναζήτηση στο σύστημά σας σε πραγματικό χρόνο (τη στιγμή που ζητείται), η εντολή locate κάνει αναζήτηση σε μια βάση δεδομένων δεικτών αρχείων. Αυτό έχει το πλεονέκτημα ότι οι αναζητήσεις διαρκούν μικρότερο χρόνο και δαπανώνται λιγότεροι πόροι του συστήματος, αλλά και το μειονέκτημα ότι εάν η βάση δεδομένων των δεικτών αρχείων δεν είναι ενημερωμένη, μπορεί να επιστραφούν λιγότερα ή και καθόλου αποτελέσματα.

Οι περισσότερες διανομές Linux χρησιμοποιούν τη slocate, με χαρακτηριστικά ασφάλειας που αποτρέπει τους χρήστες να δουν πληροφορίες που δεν έχουν δικαίωμα. Τα αρχεία στο κατάλογο ρίζας είναι ένα τέτοιο παράδειγμα (δεν είναι κανονικά προσβάσιμα από όλους). Κάποιος που θέλει να βρει κάποιον που γνωρίζει σχετικά με το κέλυφος C μπορεί να χρησιμοποιήσει την εντολή locate .cshrc, για να εμφανίσει αυτούς που έχουν διαμορφωμένο αρχείο ρυθμίσεων για το κέλυφος αυτό. Εάν υποθέσουμε ότι οι χρήστες root και jenny χρησιμοποιούν το κέλυφος C, τότε θα εμφανιστεί μόνο το /home/jenny/.cshrc και όχι αυτό που βρίσκεται στο κατάλογο ρίζας (root). Στα περισσότερα συστήματα η locate αποτελεί σύνδεσμο στην slocate:

billy:~> ls -l /usr/bin/locate
lrwxrwxrwx 1 root slocate  7 Oct 28 14:18 /usr/bin/locate -> slocate*
      

Η χρήστης tina θα μπορούσε να χρησιμοποιήσει τη locate για να βρει την εφαρμογή που ψάχνει:

tina:~> locate acroread
/usr/share/icons/hicolor/16x16/apps/acroread.png
/usr/share/icons/hicolor/32x32/apps/acroread.png
/usr/share/icons/locolor/16x16/apps/acroread.png
/usr/share/icons/locolor/32x32/apps/acroread.png
/usr/local/bin/acroread
/usr/local/Acrobat4/Reader/intellinux/bin/acroread
/usr/local/Acrobat4/bin/acroread
      

Οι κατάλογοι που δεν περιέχουν το όνομα bin απορρίπτονται επειδή δε περιέχουν εκτελέσιμα αρχεία. Έμειναν τρεις επιλογές άρα το αρχείο που αναζητεί η tina είναι στη θέση /usr/local/bin: είναι ένας σύνδεσμος στο σενάριο φλοιού που εκκινεί το πρόγραμμα:

tina:~> file /usr/local/bin/acroread
/usr/local/bin/acroread: symbolic link to ../Acrobat4/bin/acroread

tina:~> file /usr/local/Acrobat4/bin/acroread
/usr/local/Acrobat4/bin/acroread: Bourne shell script text executable

tina:~> file /usr/local/Acrobat4/Reader/intellinux/bin/acroread
/usr/local/Acrobat4/Reader/intellinux/bin/acroread: ELF 32-bit LSB 
executable, Intel 80386, version 1, dynamically linked (uses 
shared libs), not stripped
      

Προκειμένου να διατηρηθεί ο αριθμός διαδρομών αναζήτησης όσο το δυνατόν πιο μικρός ώστε το σύστημα να μη χρειάζεται να ψάχνει πολύ κάθε φορά που χρειάζεται να εκτελεστεί μια εντολή, προσθέτουμε μόνο τη διαδρομή /usr/local/bin και όχι άλλους καταλόγους που μπορεί να περιέχουν τα δυαδικά αρχεία κάποιου προγράμματος.

Πλήρης περιγραφή των χαρακτηριστικών των εντολών find και locate μπορούν να βρεθούν στα κείμενα τεκμηρίωσης.


3.3.3.4. Η εντολή grep

3.3.3.4.1. Γενικό φίλτρο γραμμής

Η grep είναι μια απλή αλλά ισχυρή εντολή για να φιλτράρονται οι γραμμές εισόδου και να επιστρέφονται συγκεκριμένα πρότυπα στην έξοδο.

Η γενική της σύνταξη είναι:

grep επιλογές κείμενο κατάλογος

Για παράδειγμα, εντολή:

grep -iR “chris” *

θα εμφανίσει αρχεία των οποίων είτε το όνομα είτε το περιεχόμενο περιέχουν τη λέξη chris στον τρέχοντα κατάλογο. Η συγκεκριμένη αναζήτηση δεν περιορίζεται σε κάποιον τύπο αρχείου, αλλά αφορά όλα τα αρχεία του τρέχοντος καταλόγου. Η επιλογή -i ορίζει ότι η grep δε θα κάνει διάκριση μεταξύ πεζών και κεφαλαίων ενώ η επιλογή -R (ή -r), ότι η αναζήτηση θα γίνει αναδρομικά και σε όλους τους υποκαταλόγους.

Υπάρχουν χιλιάδες εφαρμογές για την grep. Στο παρακάτω παράδειγμα ο jerry χρησιμοποιεί τη grep για να δει πως τα πήγε με τη χρήση της find:

jerry:~> grep -a find .bash_history
find . -name userinfo
man find
find ../ -name common.cfg
      

Tip

Ιστορικό αναζήτησης

 

Επίσης χρήσιμη είναι η λειτουργία αναζήτησης του bash που ενεργοποιείται πληκτρολογώντας ταυτόχρονα Ctrl+R, όπως στην περίπτωση που θελήσαμε να ελέγξουμε την τελευταία χρήση της find:

thomas ~> ^R 
(reverse-i-search)`find': find `/home/thomas` -name *.xml

Πληκτρολογήστε τους προς αναζήτηση χαρακτήρες στο πεδίο αναζήτησης. Όσο περισσότερους δώσετε τόσο περιορίζεται το αποτέλεσμα. Διαβάζετε το ιστορικό εντολών για την τρέχουσα χρήση του φλοιού (αποθηκεύεται στο .bash_history του βασικού καταλόγου όταν κλείνετε την τρέχουσα σύνοδο) και η πιο πρόσφατη καταχώρηση των ζητούμενων χαρακτήρων εμφανίζεται. Εάν θέλετε να δείτε προηγούμενες εντολές με τους ίδιους χαρακτήρες πληκτρολογείστε ξανά Ctrl+R.

Δείτε τις σελίδες τεκμηρίωσης του bash για περισσότερα.

Όλα τα UNIX έχουν ένα αξιοπρεπές online λεξικό. Το ίδιο και το Linux. Το λεξικό είναι μια λίστα από γνωστές λέξεις που βρίσκονται στο αρχείο words στην τοποθεσία /usr/share/dict. Για τον άμεσο ορθογραφικό έλεγχο μιας λέξης χωρίς γραφικό περιβάλλον:

william:~> grep pinguin /usr/share/dict/words

william:~> grep penguin /usr/share/dict/words
penguin
penguins
      

Ποιος είναι ο ιδιοκτήτης του διπλανού οικείου καταλόγου; Α, να και ποιο το τηλέφωνό του!

lisa:~> grep gdbruyne /etc/passwd
gdbruyne:x:981:981:Guy Debruyne, tel 203234:/home/gdbruyne:/bin/bash
      

Και ποιο είναι το E-mail του Arno;

serge:~/mail> grep -i arno *
sent-mail: To: <Arno.Hintjens@celeb.com>
sent-mail: On Mon, 24 Dec 2001, Arno.Hintjens@celeb.com wrote:
      

Οι find και locate χρησιμοποιούνται συχνά σε συνδυασμό με την grep για να οριστούν μερικά σημαντικά ερωτήματα. Περισσότερα στο Κεφάλαιο 5 στην ανακατεύθυνση Εισόδου/Εξόδου.


3.3.3.4.2. Ειδικοί χαρακτήρες (wildcards)

Ένα από τα πιο δυνατά χαρακτηριστικά της κονσόλας του Linux είναι η χρήση χαρακτήρων μπαλαντέρ για την εκτέλεση εντολών με ορίσματα των οποίων τα ονόματα ταιριάζουν με ένα
κοινό μοτίβο.

Στον πίνακα που ακολουθεί συνοψίζονται οι βασικοί χαρακτήρες μπαλαντέρ του Linux:

* Οποιοιδήποτε και οσοιδήποτε χαρακτήρες
? Ένας οποιοσδήποτε χαρακτήρες
[] Χρησιμοποιείται για την αναπαράσταση εύρους χαρακτήρων (π.χ. [a-e] -> a, b, c, d, e ή [abd] -> a, b, d)

Οι χαρακτήρες που έχουν ειδική σημασία για το κέλυφος απαιτούν τη χρήση χαρακτήρων διαφυγής. Για το Bash όπως και τους περισσότερους φλοιούς είναι η δεξιόστροφη κάθετος, backslash (\), η χρήση του οποίου αφαιρεί την ειδική σημασία του συμβόλου που ακολουθεί.

Για παράδειγμα εάν θέλουμε να εμφανιστεί το αρχείο με το όνομα "*" αντί για όλα τα αρχεία του καταλόγου, πρέπει να χρησιμοποιηθεί η σύνταξη

less \*

Το ίδιο συμβαίνει για τα ονόματα αρχείων που περιέχουν κενούς χαρακτήρες:

cat This\ File


3.3.4. Περισσότεροι τρόποι για την εμφάνιση περιεχομένου αρχείων

3.3.4.1. Γενικά

Εκτός από την cat, που δε κάνει τίποτε περισσότερο από την αποστολή του αρχείου στην προκαθορισμένη έξοδο, υπάρχουν και άλλα εργαλεία για την εμφάνιση του περιεχομένου ενός αρχείου.

Ο πιο εύκολος τρόπος θα ήταν η χρήση γραφικών εργαλείων αντί για τη γραμμή εντολών. Στην εισαγωγή ρίξαμε μια ματιά σε μια εφαρμογή γραφείου το OpenOffice.org. Άλλα παραδείγματα γραφικών εργαλείων είναι το GIMP (ξεκινάει από τη γραμμή εντολών με gimp), το πρόγραμμα διαχείρισης εικόνων της GNU; το xpdf για την εμφάνιση αρχείων μορφής Portable Document Format (PDF);το GhostView (gv) για τα PostScript αρχεία; το Mozilla/FireFox, lynx (ένας περιηγητής κειμένου), Konqueror, Opera και πολλά άλλα για web content; XMMS, CDplay και άλλα για αρχεία multimedia; AbiWord, Gnumeric, KOffice etc. για όλα τα είδη εφαρμογών γραφείου κλπ. Υπάρχουν χιλιάδες εφαρμογές για το Linux.

Αντίθετα επιμένουμε να εστιάζουμε στο φλοιό – ή σε εργαλεία κειμένου – που αποτελούν τη βάση για όλες τις άλλες εφαρμογές. Αυτές οι εντολές αποδίδουν καλύτερα σε περιβάλλον γραμμής εντολών με αρχεία που περιέχουν κείμενο.

Ας δούμε λοιπόν ποια χρήσιμα text εργαλεία έχουμε για να ψάξουμε μέσα σε αρχεία.

Προβλήματα γραμματοσειρών

Τα εργαλεία κειμένου που συζητάμε συχνά αντιμετωπίζουν προβλήματα με τα "αδιαμόρφωτα" αρχεία κειμένου εξαιτίας των γραμματοσειρών που χρησιμοποιούνται σε αυτά. Ειδικοί χαρακτήρες όπως τα τονισμένα γράμματα της αλφαβήτου, οι Κινέζικοι χαρακτήρες και οι χαρακτήρες από γλώσσες που χρησιμοποιούν διαφορετικό από το προκαθορισμένο en_US αλφάβητο, εμφανίζονται με λάθος τρόπο ή αντικαθίστανται με μη αναγνώσιμα σκουπίδια. Αυτά τα προβλήματα συζητούνται στην Ενότητα 7.4


3.3.4.2. "less is more"

Αναμφίβολα θα ακούσετε αυτή τη φράση αργά ή γρήγορα όταν εργάζεστε σε περιβάλλον UNIX. Η ιστορία του UNIX το εξηγεί:

Περισσότερες πληροφορίες υπάρχουν στις σελίδες τεκμηρίωσης.

Ήδη πρέπει να έχετε εργαστεί με σελιδοποιητές αφού αυτοί χρησιμοποιούνται από τη man..


3.3.4.3. Οι εντολές head και tail

Αυτές οι εντολές εμφανίζουν τις πρώτες ή τις τελευταίες γραμμές ενός αρχείου αντίστοιχα. Για να δείτε τις τελευταίες δέκα γραμμές που πληκτρολογήθηκαν:

tony:~> tail -10 .bash_history 
locate configure | grep bin
man bash
cd
xawtv &
grep usable /usr/share/dict/words 
grep advisable /usr/share/dict/words 
info quota
man quota
echo $PATH
frm
      

Η head δουλεύει παρόμοια. Η tail έχει το βολικό χαρακτηριστικό να δείχνει συνεχώς τις τελευταίες n γραμμές ενός αρχείου που αλλάζει όλη την ώρα. Η επιλογή -f χρησιμοποιείται συχνά από το διαχειριστή για τον έλεγχο των αρχείων καταγραφής (log files). Περισσότερες πληροφορίες βρίσκονται στα αρχεία τεκμηρίωσης του συστήματος.


3.3.5. Σύνδεσμοι αρχείων

3.3.5.1. Τύποι συνδέσμων

Μια και γνωρίζουμε περισσότερα για τα αρχεία και την παρουσία τους στο σύστημα αρχείων, η κατανόηση των συνδέσμων είναι πανεύκολη. Ο σύνδεσμος δεν είναι παρά η αντιστοίχηση δύο ή περισσότερων ονομάτων στο ίδιο σύνολο δεδομένων. Υπάρχουν δύο τρόποι για να γίνει:

Οι δύο τύποι συνδέσμων συμπεριφέρονται παρόμοια, αλλά δεν είναι ίδιοι όπως φαίνεται στο παρακάτω σχήμα:

Είκόνα 3-2. Ο μηχανισμός hard και soft link

Σημειώστε ότι η απομάκρυνση του αρχείου στόχου σε ένα συμβολικό σύνδεσμο καθιστά το σύνδεσμο άχρηστο.

Κάθε κανονικό αρχείο είναι κατ αρχήν ένα hard link. Τα hard links δε μπορούν να διαμοιραστούν σε διαφορετικά διαμερίσματα.

Συζητείται η ύπαρξη ενός τρίτου τύπου συνδέσμου ο user-space σύνδεσμος που είναι παρόμοιος με τη συντόμευση (shortcut) των MS Windows. Αυτοί είναι αρχεία που περιέχουν μεταδεδομένα και διερμηνεύονται μόνο από το διαχειριστή αρχείων του γραφικού περιβάλλοντος. Για τον πυρήνα και το φλοιό αποτελούν κανονικά αρχεία. Το πρόθεμα τους μπορεί να είναι .desktop ή .lnk. Ένα παράδειγμα μπορεί να βρεθεί στη θέση ~/.gnome-desktop:

[dupont@boulot .gnome-desktop]$ cat La\ Maison\ Dupont
[Desktop Entry]
Encoding=Legacy-Mixed
Name=La Maison Dupont
Type=X-nautilus-home
X-Nautilus-Icon=temp-home
URL=file:///home/dupont
      

Αυτό το παράδειγμα είναι από επιφάνεια εργασίας του KDE:

[lena@venus Desktop]$ cat camera
[Desktop Entry]
Dev=/dev/sda1
FSType=auto
Icon=memory
MountPoint=/mnt/camera
Type=FSDevice
X-KDE-Dynamic-Device=true
      

Η δημιουργία τέτοιου είδους συνδέσμων είναι εύκολη με τη χρήση των δυνατοτήτων του γραφικού περιβάλλοντος.

Στην επόμενη ενότητα θα εξετάσουμε τη δημιουργία συμβολικών συνδέσμων τύπου UNIX με τη χρήση της γραμμής εντολών.


3.3.5.2. Δημιουργία συμβολικών συνδέσμων

Οι συμβολικοί σύνδεσμοι έχουν ιδιαίτερο ενδιαφέρον για τους νέους χρήστες: είναι εύκολο να βρεθούν και δε χρειάζεται να ανησυχία για τη διαμέριση.

Η εντολή για τη δημιουργία συνδέσμων είναι η ln. Για τη δημιουργία συμβολικών συνδέσμων χρησιμοποιείται ο διακόπτης -s:

ln -s targetfile linkname

Στο παράδειγμα παρακάτω ο χρήστης freddy δημιουργεί ένα σύνδεσμο για ένα υποκατάλογο του βασικού καταλόγου σε ένα κατάλογο σε άλλη θέση του συστήματος:

freddy:~/music> ln -s /opt/mp3/Queen/ Queen

freddy:~/music> ls -l
lrwxrwxrwx  1 freddy  freddy  17 Jan 22 11:07 Queen -> /opt/mp3/Queen
      

Οι soft links είναι πολύ μικρά αρχεία σε αντίθεση με τους hard links που έχουν το ίδιο μέγεθος με το πρωτότυπο αρχείο.

Η εφαρμογή των συμβολικών συνδέσμων είναι διαδεδομένη. Χρησιμοποιούνται για την εξοικονόμηση χώρου, για την αντιγραφή αρχείων προκειμένου να εξυπηρετηθεί ένα πρόγραμμα που απαιτεί να βρίσκονται κάποια αρχεία σε άλλη θέση, χρησιμοποιούνται σε σενάρια φλοιού και γενικά γλυτώνουν από πολύ δουλειά. Ο διαχειριστής μπορεί να θέλει να μετακινήσει τους βασικούς καταλόγους των χρηστών σε διαφορετική θέση π.χ. στη θέση disk2, αλλά εάν θέλει όλα να λειτουργούν όπως και πρώτα – π.χ. το αρχείο /etc/passwd – και να καταβάλλει την ελάχιστη προσπάθεια, τότε θα δημιουργήσει ένα συμβολικό σύνδεσμο από /home προς στη νέα θέση /disk2/home..


3.4. Ασφάλεια αρχείων

3.4.1. Δικαιώματα πρόσβασης: η πρώτη γραμμή άμυνας του Linux

Το μοντέλο ασφάλειας του Linux βασίζεται σε αυτό των συστημάτων UNIX και είναι εξίσου σταθερό και στιβαρό. Στο Linux κάθε αρχείο ανήκει σε ένα χρήστη (user ή u) και μια ομάδα χρηστών (group ή g). Επίσης υπάρχει μια τρίτη κατηγορία χρηστών που ούτε είναι ιδιοκτήτες, ούτε ανήκουν στην ίδια ομάδα χρηστών (others ή o). Για κάθε μία από τις 3 κατηγορίες χρηστών (user-group-others) μπορούν να δοθούν ή να στερηθούν δικαιώματα ανάγνωσης, εγγραφής και εκτέλεσης (read-write-execute).

Ήδη έχουμε χρησιμοποιήσει την επιλογή long για την εμφάνιση των αρχείων σε ένα κατάλογο (ls -l). Οι 9 χαρακτήρες που περιγράφουν τα δικαιώματα ενός αρχείου (μετά τον πρώτο που είναι η ένδειξη τύπου αρχείου) χωρίζονται σε 3 ομάδες των 3 χαρακτήρων με κάθε ομάδα να αντιστοιχεί σε ένα είδος χρήστη. Οι 3 πρώτοι χαρακτήρες, δηλαδή, περιγράφουν τα δικαιώματα του user, οι 3 επόμενοι της ομάδας και οι 3 τελευταίοι των υπόλοιπων χρηστών.

Σε κάθε 3άδα χαρακτήρων, ο πρώτος χαρακτήρας δηλώνει το δικαίωμα ανάγνωσης (r αν έχει δικαίωμα ή – αν δεν έχει), ο δεύτερος το δικαίωμα εγγραφής (w ή -) και ο τρίτος το δικαίωμα εκτέλεσης (x ή -). Το δικαίωμα εκτέλεσης έχει φυσικά νόημα μόνο εφόσον πρόκειται για εκτελέσιμο αρχείο. Το δικαίωμα ανάγνωσης αντιστοιχεί όχι μόνο στη δυνατότητα προβολής των περιεχομένων του αρχείου, αλλά και στη δυνατότητα αντιγραφής του σε άλλη τοποθεσία. Το δικαίωμα εγγραφής συνεπάγεται όχι μόνο δυνατότητα τροποποίησης των περιεχομένων, αλλά και δυνατότητα μετακίνησης, μετονομασίας και διαγραφής. Μερικά παραδείγματα:

marise:~> ls -l To_Do
-rw-rw-r--    1 marise  users      5 Jan 15 12:39 To_Do
marise:~> ls -l /bin/ls|grep ls
-rwxr-xr-x    1 root    root   45948 Aug  9 15:01 /bin/ls*
      

Το πρώτο είναι ένα κανονικό αρχείο (πρώτη παύλα). Ο χρήστης με το όνομα marise ή οι χρήστες που ανήκουν στην ομάδα users μπορούν να διαβάσουν (προβολή περιεχομένων / αντιγραφή σε άλλη τοποθεσία) και να γράψουν (τροποποίηση περιεχομένων / μετακίνηση σε άλλη τοποθεσία / μετονομασία / διαγραφή), αλλά δε μπορούν να το εκτελέσουν (δεύτερη και τρίτη παύλα). Όλοι οι άλλοι μπορούν να το διαβάσουν αλλά δε μπορούν ούτε να γράψουν ούτε να το εκτελέσουν (τέταρτη και πέμπτη παύλα).

Το επόμενο είναι ένα εκτελέσιμο αρχείο και ο καθένας μπορεί να το εκτελέσει αλλά μόνο ο root μπορεί να το τροποποιήσει.

Οι σελίδες τεκμηρίωσης εξηγούν πως η εντολή ls χειρίζεται την εμφάνιση των δικαιωμάτων πρόσβασης, δείτε την ενότητα What information is listed.

Ένας εναλλακτικός τρόπος αναπαράστασης των δικαιωμάτων αρχείων είναι με τη χρήση του αριθμού 1 όπου ένα δικαίωμα υπάρχει και του αριθμού 0 όταν δεν υπάρχει. Στο πρώτο παράδειγμα τα δικαιώματα μπορούν να γραφτούν και ως 110 110 100. Αν κάθε τριάδα τη μετατρέψουμε από το δυαδικό σύστημα στο δεκαδικό, μπορούμε να πούμε ότι τα δικαιώματα του αρχείου είναι 664 (110 -> 6, 100 -> 4).

Πίνακας 3-7. Κωδικοί τύπου πρόσβασης

Κωδικός

Επεξήγηση

0 ή -

Καμία άδεια προσπέλασης

4 ή r

Άδεια ανάγνωσης

2 ή w

Άδεια εγγραφής

1 ή x

Άδεια εκτέλεσης

Πίνακας 3-8. Κωδικοί χρήστη και ομάδας

Κωδικός

Επεξήγηση

u

Δικαιώματα χρηστών

g

Δικαιώματα ομάδας

o

Δικαιώματα για άλλους

Αυτό το απλό σχήμα εφαρμόζεται πολύ αυστηρά επιτρέποντας υψηλό βαθμό ασφάλειας ακόμη και χωρίς σύστημα δικτυακής προστασίας. Μεταξύ των άλλων, ελέγχει την πρόσβαση των χρηστών στα προγράμματα και προστατεύει ευαίσθητα δεδομένα, όπως το κατάλογο ρίζα και τα αρχεία διαμόρφωσης του συστήματος.

Εάν δε γνωρίζετε το δικό σας όνομα χρήστη μπορείτε να το εμφανίσετε χρησιμοποιώντας την εντολή id που επίσης δείχνει την ομάδα στην οποία ανήκετε και τις άλλες ομάδες στις οποίες είστε μέλος:

tilly:~> id
uid=504(tilly) gid=504(tilly) groups=504(tilly),100(users),2051(org)
      

Το όνομά σας αποθηκεύεται επίσης και στη περιβαλλοντική μεταβλητή USER:

tilly:~> echo $USER
tilly
      

3.4.2. Τα εργαλεία

3.4.2.1. Η εντολή chmod

Η εντολή chmod χρησιμοποιείται για να προστεθούν ή να αφαιρεθούν δικαιώματα και μπορεί να έχει ως ορίσματα χαρακτήρες ή αριθμούς (ανάλογα με τους δύο τρόπους με τους οποίους συμβολίζονται τα δικαιώματα οι οποίοι περιγράφηκαν παραπάνω). Η γενική σύνταξη της εντολής (με ορίσματα χαρακτήρες) έχει ως εξής:

chmod χρήστης+/-δικαίωμα όνομα αρχείου

Παρακάτω βλέπουμε ένα παράδειγμα:

asim:~> ./hello
bash: ./hello: bad interpreter: Permission denied

asim:~> cat hello
#!/bin/bash
echo "Hello, World"

asim:~> ls -l hello
-rw-rw-r--    1 asim    asim    32 Jan 15 16:29 hello

asim:~> chmod u+x hello

asim:~> ./hello
Hello, World

asim:~> ls -l hello
-rwxrw-r--   1 asim    asim    32 Jan 15 16:29 hello*
      

Οι τελεστές + και – χρησιμοποιούνται για να προσθέσουν ή αφαιρέσουν ένα δικαίωμα σε μια ομάδα. Επιτρέπονται και συνδυασμοί τελεστών χωρισμένοι με κόμμα. Οι σελίδες τεκμηρίωσης και σελίδες οδηγιών περιέχουν χρήσιμα παραδείγματα. Παρακάτω ακολουθεί ένα παράδειγμα, το οποίο προσθέτει στο χρήστη asim του αρχείου hello όλα τα δικαιώματα ενώ παράλληλα τα αφαιρεί από την ομάδα και τους υπόλοιπους χρήστες:

asim:~> chmod u+rwx,go-rwx hello

asim:~> ls -l hello
-rwx------    1 asim    asim    32 Jan 15 16:29 hello*
      

Το μήνυμα λάθους που λέει οτι δεν επιτρέπεται η πρόσβαση (permission denied) είναι συνήθως πρόβλημα ανεπαρκών δικαιωμάτων πρόσβασης. Επίσης σχόλια σαν "It worked yesterday," και "When I run this as root it works," οφείλονται στις περισσότερες περιπτώσεις σε λάθος δικαιώματα.

Όταν χρησιμοποιείτε τη chmod με αριθμητικά ορίσματα, τα δικαιώματα πρέπει να υπολογίζονται ανά ομάδα. Έτσι έχουμε ένα τριψήφιο οκταδικό αριθμό που αντιστοιχεί στις ρυθμίσεις που πρέπει να κάνει η chmod. Σε αυτή την περίπτωση η γενική σύνταξή της είναι:

chmod αριθμός όνομα_αρχείου ή καταλόγου

Ο παρακάτω πίνακας περιέχει τους πιο συνηθισμένους συνδυασμούς:

Πίνακας 3-9. Προστασία αρχείων με chmod

Εντολή

Επεξήγηση

chmod 400 file

Προστατεύει το αρχείο από τυχαία τροποποίηση ή διαγραφή.

chmod 500 directory

Προστατεύει από τυχαία διαγραφή, μετονομασία ή μετακίνηση αρχείων από αυτόν τον κατάλογο.

chmod 600 file

Ιδιωτικό αρχείο που τροποποιείται μόνο από το χρήστη που έδωσε αυτή την εντολή.

chmod 644 file

Ένα αναγνώσιμο από όλους αρχείο που τροποποιείται μόνο από τον χρήστη που έδωσε τα δικαιώματα.

chmod 660 file

Οι χρήστες της ίδιας ομάδας μπορούν να το τροποποιήσουν, οι άλλοι δεν έχουν καμία πρόσβαση.

chmod 700 file

Δεν επιτρέπει καμία πρόσβαση παρά μόνο στον χρήστη που έδωσε τα δικαιώματα που διατηρεί πλήρη πρόσβαση.

chmod 755 directory

Μπορεί να αναγνωσθεί και εκτελεστεί από άλλους αλλά τροποποιείται μόνο από το χρήστη που έδωσε τα δικαιώματα.

chmod 775 file

Προκαθορισμένα κοινόχρηστα δικαιώματα για μια ομάδα.

chmod 777 file

Πλήρης πρόσβαση από όλους.

Εάν δώσετε λιγότερα από τρία ψηφία σαν όρισμα στην chmod, τα ψηφία που λείπουν συμπληρώνονται με μηδενικά αρχίζοντας από τα αριστερά. Αξίζει να σημειωθεί ότι η εκτέλεση της εντολής chmod με όρισμα έναν κατάλογο και την επιλογή -R αλλάζει τα δικαιώματα αναδρομικά και σε όλα τα αρχεία και τους καταλόγους που περιέχονται σε αυτόν. Οτιδήποτε σχετικό για αυτό και πολλά περισσότερα βρίσκονται στις σελίδες τεκμηρίωσης.


3.4.2.2. Σύνδεση με άλλη ομάδα

Με την χρήση της εντολής id από τη γραμμή εντολών, εμφανίζεται το ID και η ομάδα με τα οποία είμαστε συνδεδεμένοι εκείνη τη στιγμή, ακολουθούμενα από λίστα όλων των ομάδων που συμμετέχουμε. Σε μερικά συστήματα Linux μπορούμε να είμαστε συνδεδεμένοι μόνο σε μια ομάδα κάθε στιγμή. Εξ ορισμού αυτή η ενεργή ή κύρια ομάδα (primary group) είναι αυτή που ορίζεται στο αρχείο /etc/passwd. Το τέταρτο πεδίο σε αυτό το αρχείο αφορά τη κύρια ομάδα του χρήστη (μπορεί να βρεθεί και στο /etc/group. Ένα παράδειγμα:

asim:~> id
uid=501(asim) gid=501(asim) groups=100(users),501(asim),3400(web)

asim:~> grep asim /etc/passwd
asim:x:501:501:Asim El Baraka:/home/asim:/bin/bash

asim:~> grep 501 /etc/group
asim:x:501:
      

Το τέταρτο πεδίο στη γραμμή από το /etc/passwd περιέχει την τιμή "501" που αντιπροσωπεύει την ομάδα asim στο παραπάνω παράδειγμα. Από το /etc/group μπορούμε να βρούμε το όνομα που αφορά αυτό το ID ομάδας. Όταν θα συνδεθεί αρχικά με το σύστημα ο χρήστης asim θα ανήκει στην παραπάνω ομάδα.

Σχήμα ιδιωτικής ομάδας χρήστη

Για μεγαλύτερη ευελιξία τα περισσότερα συστήματα Linux ακολουθούν το σχήμα ιδιωτικής ομάδας χρήστη (private group scheme), που αναθέτει κάθε χρήστη πρωτίστως μια δική του ομάδα, γι' αυτό και λέγεται ιδιωτική ομάδα. Συνήθως αυτή η ομάδα έχει το ίδιο όνομα με το όνομα χρήστη, που μπορεί να μπερδέψει λίγο.

Εκτός από την ιδιωτική του ομάδα ο χρήστης asim μπορεί επίσης να είναι μέλος των ομάδων users και web. Επειδή αυτές είναι δευτερεύουσες ομάδες γι' αυτόν, θα χρειαστεί την εντολή newgrp για να συνδεθεί σε οποιαδήποτε από αυτές. Στο παράδειγμα ο asim θέλει να δημιουργήσει αρχεία που ανήκουν στην ομάδα web.

asim:/var/www/html> newgrp web

asim:/var/www/html> id
uid=501(asim) gid=3400(web) groups=100(users),501(asim),3400(web)
      

Όταν ο asim δημιουργήσει νέα αρχεία θα ανήκουν στην ιδιοκτησία της ομάδας web αντί για την asim:

asim:/var/www/html> touch test

asim:/var/www/html> ls -l test
-rw-rw-r--  1 asim web   0 Jun 10 15:38 test
      

Η σύνδεση με μια νέα ομάδα αποτρέπει από τη χρήση της chown (δες Ενότητα 3.4.2.4) ή από την παρέμβαση του διαχειριστή για αλλαγή δικαιωμάτων.

Δείτε τις σελίδες οδηγιών της newgrp για περισσότερες πληροφορίες.


3.4.2.3. Η μάσκα αρχείου

Όταν ένα αρχείο αποθηκεύεται κάπου υπόκειται στα προκαθορισμένα πρότυπα ασφάλειας. Στο Linux δεν υπάρχουν αρχεία χωρίς άδειες πρόσβασης. Οι προκαθορισμένες άδειες με την μάσκα δημιουργίας αρχείου (mask). Η τιμή αυτής της μάσκας εμφανίζεται με τη χρήση της εντολής umask:

bert:~> umask
0002
      

Για να υπολογιστούν τα δικαιώματα ενός νέου αρχείου η παραπάνω τιμή θα πρέπει να αφαιρεθεί από τα μέγιστα δυνατά δικαιώματα. Στο παραπάνω παράδειγμα βλέπουμε 4 αριθμούς ενώ υπάρχουν μόνο 3 κατηγορίες δικαιωμάτων: χρήστης, ομάδα, άλλοι. Το πρώτο μηδενικό αφορά τις ρυθμίσεις των ειδικών χαρακτηριστικών του αρχείου, που θα συζητηθεί στην Ενότητα 3.4.2.4 και Ενότητα 4.1.6. Αυτό το μηδενικό μπορεί και να μην εμφανίζεται όταν δίνεται την εντολή umask και να βλέπετε μόνο 3 νούμερα που αντιπροσωπεύουν τη προκαθορισμένη μάσκα.

Κάθε σύστημα UNIX έχει μια λειτουργία συστήματος που ασχολείται με τη δημιουργία αρχείων και καλείται κάθε φορά που ο χρήστης χρησιμοποιεί ένα πρόγραμμα που δημιουργεί νέα αρχεία, π.χ όταν μεταφορτώνει αρχεία από το Διαδίκτυο, όταν αποθηκεύει ένα κείμενο κ.λ.π. Αυτή η λειτουργία δημιουργεί τόσο νέα αρχεία όσο και νέους καταλόγους. Όταν δημιουργείται ένας νέος κατάλογος, δίνονται πλήρη δικαιώματα ανάγνωσης, εγγραφής και εκτέλεσης σε όλους. Όταν δημιουργείται ένα νέο αρχείο αυτή η λειτουργία δίνει πλήρη δικαιώματα ανάγνωσης και εγγραφής σε όλους αλλά δικαίωμα εκτέλεσης σε κανέναν. Έτσι πριν η μάσκα εφαρμοστεί ένας κατάλογος έχει δικαιώματα 777 ή rwxrwxrwx, ένα αρχείο 666 ή rw-rw-rw-.

Στη συνέχεια αφαιρείται η τιμή umask από αυτά τα προκαθορισμένα δικαιώματα.Έτσι ένας κατάλογος θα έχει δικαιώματα 775 εξ ορισμού και ένα αρχείο 664 εάν η μάσκα έχει τιμή (0)002. Αυτό επιδεικνύεται στο παρακάτω παράδειγμα:

bert:~> mkdir newdir

bert:~> ls -ld newdir
drwxrwxr-x    2 bert    bert            4096 Feb 28 13:45 newdir/

bert:~> touch newfile

bert:~> ls -l newfile
-rw-rw-r--    1 bert    bert               0 Feb 28 13:52 newfile
      

Εάν συνδεθείτε σε μια άλλη ομάδα χρησιμοποιώντας την εντολή newgrp η μάσκα παραμένει ίδια. Έτσι εάν είναι ορισμένη σε 002, τα αρχεία και οι κατάλογοι που θα δημιουργηθούν κατά τη διάρκεια της σύνδεσης στη νέα ομάδα θα είναι επίσης προσβάσιμα από τα υπόλοιπα μέλη της, δηλαδή δε χρειάζεται να χρησιμοποιήσετε τη chmod.

Ο χρήστης root συνήθως έχει πιο αυστηρά προκαθορισμένα δικαιώματα για τα νέα αρχεία:

[root@estoban root]# umask
022

Μπορείτε να τα αλλάξετε τις ρυθμίσεις όταν δημιουργείτε το δικό σας αρχείο διαμόρφωσης φλοιού, δείτε το Κεφάλαιο 7.


3.4.2.4. Αλλαγή ιδιοκτήτη (χρήστη / ομάδας)

Όταν ένα αρχείο ανήκει σε λάθος χρήστη ή ομάδα μπορεί να γίνει διόρθωση με τις εντολές chown (αλλαγή ιδιοκτήτη) και chgrp (αλλαγή ομάδας). Αυτή είναι μια τακτική εργασία για το διαχειριστή σε ένα περιβάλλον όπου τα αρχεία πρέπει να μοιράζονται σε μια ομάδα. Και οι δύο εντολές είναι πολύ ευέλικτες, όπως θα δείτε χρησιμοποιώντας την επιλογή --help.

Η chown μπορεί να χρησιμοποιηθεί για την αλλαγή της ιδιοκτησίας ενός αρχείου τόσο για τον χρήστη όσο και για την ομάδα, ενώ η chgrp αλλάζει μόνο την ιδιοκτησία για την ομάδα. Φυσικά το σύστημα εξετάζει κατά πόσο αυτός που αιτείται αυτή την ενέργεια έχει τα αντίστοιχα δικαιώματα.

Για να αλλάξετε τον ιδιοκτήτη ενός αρχείου χρησιμοποιήσετε την παρακάτω σύνταξη:

chown newuser file

Εάν χρησιμοποιήσετε άνω κάτω τελεία μετά το όνομα χρήστη, θα αλλάξει και η ιδιοκτησία ομάδος στην κύρια ομάδα του χρήστη που έδωσε την εντολή. Όπως είπαμε σε πολλά Linux συστήματα, ο κάθε χρήστης έχει τη δική του ομάδα, οπότε αυτή η έκφραση μπορεί να χρησιμοποιηθεί για την μετατροπή των αρχείων σε ιδιωτικά:

jacky:~> id
uid=1304(jacky) gid=(1304) groups=1304(jacky),2034(pproject)

jacky:~> ls -l my_report
-rw-rw-r--  1 jacky   project       29387 Jan 15 09:34 my_report

jacky:~> chown jacky: my_report

jacky:~> chmod o-r my_report

jacky:~> ls -l my_report
-rw-rw----  1 jacky   jacky         29387 Jan 15 09:34 my_report
      

Εάν η jacky ήθελε να μοιραστεί αυτό το αρχείο χωρίς να δώσει δικαιώματα εγγραφής στον καθένα μπορεί να χρησιμοποιήσει την εντολή chgrp:

jacky:~> ls -l report-20020115.xls
-rw-rw---- 1 jacky   jacky   45635 Jan 15 09:35 report-20020115.xls

jacky:~> chgrp project report-20020115.xls

jacky:~> chmod o= report-20020115.xls

jacky:~> ls -l report-20020115.xls
-rw-rw---- 1 jacky   project 45635 Jan 15 09:35 report-20020115.xls
      

Με αυτόν τον τρόπο οι χρήστες της ομάδας project μπορούν να εργαστούν με αυτό το αρχείο και οι χρήστες εκτός ομάδας όχι.

Τόσο η chown όσο και η chgrp έχουν τη δυνατότητα αναδρομικής αλλαγής ιδιοκτήτη χρησιμοποιώντας την επιλογή -R. Με αυτόν τον τρόπο όλα τα αρχεία και υπο-κατάλογοι ενός καταλόγου θα ανήκουν στον συγκεκριμένο χρήστη ή ομάδα.

Περιορισμοί

Στα περισσότερα συστήματα η χρήση των chown και chgrp απαγορεύεται για τους μη εξουσιοδοτημένους χρήστες. Μόνο ο διαχειριστής μπορεί να αλλάξει τις ιδιοκτησίες χρήστη και ομάδας. Εάν δεν υπήρχε ο περιορισμός κακοπροαίρετοι χρήστες θα μπορούσαν να αλλάξουν τα δικαιώματα ιδιοκτησίας αρχείων, τροποποιώντας το περιβάλλον των χρηστών, ακόμα και να καταστρέψουν τα αρχεία τους.


3.4.2.5. Ειδικές μέθοδοι

Για να μην απασχολείται συνεχώς ο διαχειριστής με προβλήματα δικαιωμάτων, μπορούν να δοθούν ειδικά δικαιώματα πρόσβασης σε ολόκληρους καταλόγους ή σε ξεχωριστά προγράμματα. Υπάρχουν τρεις ειδικές μέθοδοι:

Τα υφιστάμενα αρχεία παραμένουν αναλλοίωτα!

Τα αρχεία που μετακινούνται σε έναν κατάλογο SGID αλλά δημιουργήθηκαν κάπου αλλού διατηρούν τις αρχικές τους άδειες. Αυτό ίσως να δημιουργεί απορίες.


3.5. Περίληψη

Στο UNIX και το Linux όλες οι οντότητες παρουσιάζονται στο σύστημα σαν αρχεία με τις αντίστοιχες ιδιότητες. Η χρήση των προκαθορισμένων διαδρομών επιτρέπει στους χρήστες και το διαχειριστή να βρουν, διαβάσουν και χειριστούν τα αρχεία.

Έχουμε κάνει τα πρώτα βήματα για να γίνουμε ειδικοί: συζητήσαμε την πραγματική και την εικονική δομή του συστήματος αρχείων, το μοντέλο ασφάλειας των αρχείων στο Linux, καθώς και διάφορες άλλες προφυλάξεις που λαμβάνονται εξ' ορισμού σε κάθε σύστημα.

Ο φλοιός είναι το σημαντικότερο εργαλείο για αλληλεπίδραση με το σύστημα και σε αυτό το κεφάλαιο μάθαμε αρκετές εντολές φλοιού, που εμφανίζονται στον παρακάτω πίνακα.

Πίνακας 3-10. Νέες εντολές στο κεφάλαιο 3: Αρχεία και σύστημα αρχείων

Εντολή

Σημασία

bash

GNU πρόγραμμα φλοιού.

cat file(s)

Αποστολή του περιεχομένου του αρχείου(ων) στην προκαθορισμένη έξοδο.

cd directory

Μετακίνηση στον κατάλογο directory. Η εντολή cd είναι ενσωματωμένη στο bash.

chgrp newgroup file(s)

Αλλάζει την ομάδα ιδιοκτήτη του/των file(s) στην ομάδα newgroup

chmod mode file(s)

Αλλάζει τα δικαιώματα πρόσβασης του/των file(s)

chown newowner[:[newgroup]] file(s)

Αλλάζει τον ιδιοκτήτη του αρχείου και την ομάδα ιδιοκτήτη.

cp sourcefile targetfile

Αντιγράφει το sourcefile στο targetfile.

df file

Αναφέρει το χρησιμοποιημένο χώρο της διαμέρισης του δίσκου που περιέχει το file.

echo string

Εμφανίζει το αλφαριθμητικό string

export

Μέρος του bash που ανακοινώνει τις μεταβλητές και την τιμή τους στο σύστημα.

file filename

Αποφασίζει τον τύπο αρχείου του filename.

find path expression

Εντοπίζει αρχεία στην ιεραρχία αρχείων του συστήματος

grep PATTERN file

Τυπώνει τις γραμμές του file που περιέχουν το πρότυπο αναζήτησης.

head file

Στέλνει το αρχικό μέρος (κεφαλή) του file στην προκαθορισμένη έξοδο.

id

Εμφανίζει τα πραγματικά και ενεργά ονόματα χρηστών και ομάδων.

info command

Εμφανίζει την τεκμηρίωση σχετικά με την εντολή command.

less file

Εμφανίζει το file με ένα ισχυρό εργαλείο σελιδοποίησης.

ln targetfile linkname

Δημιουργεί ένα σύνδεσμο με το όνομα linkname για το targetfile.

locate searchstring

Εμφανίζει όλα α αρχεία που ταιριάζουν με το πρότυπο εύρεσης.

ls file(s)

Εμφανίζει το περιεχόμενο του καταλόγου.

man command

Εμφανίζει τις σελίδες οδηγιών του συστήματος για την εντολή command.

mkdir newdir

Δημιουργεί ένα νέο κενό κατάλογο.

mv oldfile newfile

Μετονομάζει ή μετακινεί το oldfile.

newgrp groupname

Σύνδεση με μια νέα ομάδα.

pwd

Εμφανίζει τον τρέχοντα κατάλογο.

quota

Εμφανίζει τη χρήση του δίσκου (μερίδια).

rm file

Διαγράφει αρχεία και καταλόγους.

rmdir file

Διαγράφει καταλόγους.

tail file

Εμφανίζει το τέλος (ουρά) του αρχείου.

umask [value]

Εμφανίζει ή αλλάζει την μάσκα δημιουργίας αρχείων.

wc file

Μετράει τις γραμμές, τις λέξεις και τους χαρακτήρες του αρχείου file.

which command

Εμφανίζει τη πλήρη διαδρομή για το αρχείο command.

Έχουμε δώσει έμφαση στο γεγονός ότι πρέπει να ΔΙΑΒΑΣΕΤΕ ΤΙΣ ΣΕΛΙΔΕΣ ΟΔΗΓΙΩΝ / ΤΕΚΜΗΡΙΩΣΗΣ. Πρόκειται για τις πρώτες βοήθειες και δίνουν απαντήσεις σε πολλές ερωτήσεις. Ο παραπάνω κατάλογος περιέχει τις βασικές εντολές που θα χρησιμοποιήσετε σε καθημερινή βάση, όμως αυτές μπορούν να κάνουν περισσότερα πράγματα από αυτά που αναφέρουμε. Διαβάζοντας τις οδηγίες αποκτάτε τον έλεγχο που χρειάζεστε.

Εν τέλει παραθέτουμε και τις άδειες πρόσβασης των αρχείων:

Πίνακας 3-11. Άδειες πρόσβασης αρχείων

Ποιός\Τί

r(ead)

w(rite)

(e)x(ecute)

u(ser)

4

2

1

g(roup)

4

2

1

o(ther)

4

2

1


3.6. Ασκήσεις

Συνδεθείτε με το όνομα χρήστη που έχετε.


3.6.1. Διαμερίσματα


3.6.2. Διαδρομές


3.6.3. Περιήγηση στο σύστημα


3.6.4. Διαχείριση αρχείων


3.6.5. Άδειες πρόσβασης αρχείων


Κεφάλαιο 4. Διεργασίες

Μαζί με τα αρχεία, οι διεργασίες είναι οι πιο σημαντικές οντότητες σε ένα σύστημα UNIX/Linux. Σε αυτό το κεφάλαιο μελετούμε προσεκτικότερα τις διεργασίες. Θα μάθουμε για:

4.1. Οι διεργασίες αναλυτικά

4.1.1. Πολυ-χρηστικό και πολυ-εργασιακό περιβάλλον

Τώρα που έχουμε κάπως συνηθίσει το περιβάλλον μας, και μπορούμε να επικοινωνούμε κάπως περισσότερο με το σύστημά μας, είναι καιρός να μελετήσουμε τις διεργασίες που μπορούμε να αναλύσουμε με περισσότερη λεπτομέρεια. Όλες οι εντολές δεν αρχίζουν μια απλή διεργασία. Μερικές εντολές ξεκινούν μια σειρά διεργασίες, ενώ άλλες, όπως η ls, απλά εκτελούνται.

Επιπλέον, το Linux βασίζεται στο UNIX, όπου είναι κοινή πολιτική να έχουμε πολλούς χρήστες να εκτελούν πολλές εντολές, την ίδια ώρα στο ίδιο σύστημα. Είναι προφανές οτι έπρεπε να ληφθούν μέτρα ώστε η CPU να μπορεί να διαχειριστεί όλες αυτές τις διεργασίες, και να υπάρχουν εργαλεία για την εναλλαγή των χρηστών και των διεργασιών. Σε μερικές περιπτώσεις, οι διεργασίες πρέπει να συνεχίσουν να εκτελούνται ακόμη και αν ο χρήστης που τις ξεκίνησε έχει αποσυνδεθεί. Και οι χρήστες πρέπει να έχουν τα μέσα για τη διακοπή και επανενεργοποίηση σταματημένων διεργασιών.

Θα εξηγήσουμε τη δομή των διεργασιών του Linux στις επόμενες ενότητες.


4.1.2. Τύποι διεργασιών

4.1.2.1. Διαλογικές διεργασίες

Οι διαλογικές διεργασίες αρχικοποιούνται και ελέγχονται από μια σύνοδο τερματικού. Με άλλα λόγια, πρέπει να υπάρχει κάποιος συνδεδεμένος στο σύστημα για να ξεκινήσει τέτοιες διεργασίες, δεν ξεκινούν αυτόματα σαν μέρος των λειτουργιών του συστήματος. Αυτές οι διεργασίες μπορεί να εκτελούνται στο προσκήνιο, καταλαμβάνοντας το τερματικό που τις ξεκίνησε, ώστε δεν μπορείτε να ξεκινήστε άλλες εφαρμογές όσο αυτές οι διεργασίες εκτελούνται. Εναλλακτικά μπορεί να εκτελούνται στο παρασκήνιο, ώστε το τερματικό που τις ξεκίνησε να μπορεί να δέχεται νέες εντολές, ενώ αυτές οι διεργασίες συνεχίζουν να εκτελούνται. Μέχρι τώρα, εστιάσαμε κυρίως σε προγράμματα (διεργασίες) που εκτελούνται στο προσκήνιο – η απαιτούμενη ώρα εκτέλεσης είναι πολύ μικρή για να γίνει αντιληπτή. Επιπλέον, ορισμένες διεργασίες περιμένουν από εσάς να κάνετε κάτι, ένα καλό παράδειγμα είναι όταν βλέπετε ένα αρχείο με την εντολή less. Το πρόγραμμα περιμένει από εσάς να πατήσετε κάποιο πλήκτρο. Το πρόγραμμα έχει 'καταλάβει' το τερματικό που πλέον καταλαβαίνει μόνο εντολές του προγράμματος. Σε άλλες εντολές η 'κατάληψη' μπορεί να σημαίνει ακόμη και 'πάγωμα' του τερματικού ή σειρά μηνυμάτων λάθους.

Όσο όμως μια διεργασία εκτελείται στο υπόβαθρο, ο χρήστης μπορεί να κάνει άλλα πράγματα στο τερματικό που ξεκίνησε τη διεργασία.

Ο φλοιός προσφέρει ένα χαρακτηριστικό που λέγεται έλεγχος εργασιών (job control) που επιτρέπει την εύκολη διαχείριση πολλαπλών διεργασιών. Αυτός ο μηχανισμός εναλλάσσει διεργασίες μεταξύ προσκηνίου και παρασκηνίου. Επίσης μπορεί να ξεκινήσει διεργασίες κατ' ευθείαν στο παρασκήνιο.

Η εκτέλεση διεργασιών στο παρασκήνιο είναι χρήσιμη μόνο όταν τα αντίστοιχα προγράμματα δεν απαιτούν επικοινωνία με το χρήστη (μέσω του φλοιού). Τυπικά θέτουμε εργασίες στο παρασκήνιο όταν περιμένουμε να διαρκέσουν πολλή ώρα. Για να ελευθερώσουμε το τερματικό, εισάγουμε ένα '&' ( ampersand) μετά την εντολή. Στο παράδειγμα, σε γραφική διεπαφή, ανοίγουμε ένα επιπλέον παράθυρο τερματικού:

billy:~> xterm &
[1] 26558

billy:~> jobs
[1]+  Running                 xterm &
      

Τα πλήρη χαρακτηριστικά του ελέγχου εργασιών εξηγούνται στις σελίδες τεκμηρίωσης του bash, έτσι εδώ παρουσιάζονται μόνο τα συχνά χρησιμοποιούμενα:

Πίνακας 4-1. Έλεγχος διεργασιών

(μέρος) εντολή(ς)

Σημασία

command

Εκτέλεση εντολής command στο προσκήνιο.

command &

Εκτέλεση της εντολής command στο παρασκήνιο (απελευθέρωση τερματικού)

jobs

Εμφάνιση των εντολών που εκτελούνται στο παρασκήνιο.

Ctrl+Z

Αναστολή (σταμάτημα, αλλά όχι τερματισμός) μιας διεργασίας που εκτελείται στο προσκήνιο.

Ctrl+C

Τερματισμός (διακοπή και παραίτηση) μιας διεργασίας που εκτελείται στο προσκήνιο.

%n

Κάθε διεργασία που εκτελείται στο παρασκήνιο παίρνει έναν αριθμό. Με την έκφραση %n Μια εργασία αναφέρεται με τον αριθμό της, για παράδειγμα fg %2.

bg

Επανενεργοποίηση ενός προγράμματος που έχει ανασταλεί στο παρασκήνιο.

fg

Επαναφορά εργασίας στο προσκήνιο.

kill

Τερματισμός διεργασίας (δες επίσης Shell Builtin Commands στη τεκμηρίωση του bash)

Στις ασκήσεις υπάρχουν πρακτικά παραδείγματα.

Πολλά συστήματα UNIX πιθανώς να έχουν ακόμη την εντολή screen, που παίζει ρόλο αντίστοιχο με τη εκκίνηση ενός νέου παράθυρου τερματικού. Επιπλέον όλα τα προγράμματα και οι διεργασίες θα εκτελεστούν στο screen ανεξάρτητα από το τρέχον παράθυρο. Μπορείτε να αποσυνδεθείτε εντελώς από το σύστημα και να επανασυνδεθείτε αργότερα και να δείτε τι κάνει το screen που ξεκινήσατε.

Το πρόγραμμα αυτό προέρχεται από την εποχή που δεν υπήρχαν παράθυρα τερματικών, και όλα έπρεπε να γίνουν μέσα από το ίδιο τερματικό κειμένου. Τώρα η χρήση του είναι περιορισμένη στους 'μανιακούς' του παλιού UNIX.


4.1.2.2. Αυτόματες διεργασίες

Οι αυτόματες διεργασίες ή διεργασίες δέσμης (batch) δεν συνδέονται με ένα τερματικό. Πρόκειται για εργασίες που μπαίνουν σε ουρά στον spooler, ώστε μπορούν να εκτελεστούν με λογική FIFO (first-in, first-out). Τέτοιες εργασίες εκτελούνται με βάση δυο κριτήρια:


4.1.2.3. Δαίμονες

Οι δαίμονες (daemons) είναι διεργασίες διακομιστή που εκτελούνται συνεχώς. Συνήθως αρχικοποιούνται με την έναρξη του συστήματος και μετά περιμένουν στο παρασκήνιο μέχρι να ζητηθεί η συνδρομή τους, ένα τυπικό παράδειγμα είναι ο δαίμονας της δικτύωσης, xinetd, που ξεκινά σχεδόν σε κάθε διαδικασία εκκίνησης. Μετά την εκκίνηση του συστήματος, ο δαίμονας κάθεται μέχρι κάποιο πρόγραμμα πελάτης, όπως ένας πελάτης FTP, χρειάζεται να συνδεθεί.


4.1.3. Χαρακτηριστικά διεργασιών

Μια διεργασία έχει μια σειρά χαρακτηριστικά, που μπορούμε να τα δούμε με την εντολή ps:


4.1.4. Εμφάνιση πληροφοριών διεργασίας

Η εντολή ps είναι ένα βασικό εργαλείο για να εμφανίσουμε διεργασίες. Η εντολή αυτή έχει πολλές επιλογές που μπορούν να συνδυαστούν για να εμφανίσουμε διάφορα χαρακτηριστικά διεργασιών.

Χωρίς επιλογές, η ps δίνει μόνο πληροφορίες για την τρέχουσα σύνοδο φλοιού και προκύπτουσες διεργασίες:

theo:~> ps
  PID TTY          TIME CMD
 4245 pts/7    00:00:00 bash
 5314 pts/7    00:00:00 ps
      

Καθώς αυτό δεν δίνει αρκετή πληροφορία (γενικά εκτελούνται πάνω από εκατό διεργασίες στο σύστημά μας) συνήθως επιλέγουμε συγκεκριμένες διεργασίες από τη λίστα όλων των διεργασιών, με χρήση της εντολής grep σε μια σωλήνωση (pipe), δες Ενότητα 5.1.2.1, όπως στη γραμμή που ακολουθεί, εμφανίζοντας όλες τις διεργασίες με ιδιοκτήτη κάποιο συγκεκριμένο χρήστη:

ps -ef | grep username

Το παράδειγμα δείχνει όλες τις διεργασίες που περιέχουν το αλφαριθμητικό bash, τον πιο συνηθισμένο φλοιό σε συστήματα Linux:

theo:> ps auxw | grep bash
brenda   31970  0.0  0.3  6080 1556 tty2   S  Feb23   0:00 -bash
root     32043  0.0  0.3  6112 1600 tty4   S  Feb23   0:00 -bash
theo     32581  0.0  0.3  6384 1864 pts/1  S  Feb23   0:00 bash
theo     32616  0.0  0.3  6396 1896 pts/2  S  Feb23   0:00 bash
theo     32629  0.0  0.3  6380 1856 pts/3  S  Feb23   0:00 bash
theo      2214  0.0  0.3  6412 1944 pts/5  S  16:18   0:02 bash
theo      4245  0.0  0.3  6392 1888 pts/7  S  17:26   0:00 bash
theo      5427  0.0  0.1  3720  548 pts/7  S  19:22   0:00 grep bash
      

Σε αυτές τις περιπτώσεις, η εντολή grep που βρίσκει το αλφαριθμητικό bash χρησιμοποιείται σε συστήματα που έχουν πολύ idletime. Εναλλακτικά μπορείτε να χρησιμοποιήσετε την εντολή pgrep.

|?

Θα εξηγήσουμε τον τελεστή | στο επόμενο κεφάλαιο, δες Κεφάλαιο 5.

Περισσότερες πληροφορίες μπορούν να βρεθούν ως συνήθως: με ps --help ή man ps. Η GNU ps υποστηρίζει αρκετές διαφορετικές μορφές επιλογών.

Σημειώστε οτι η ps δίνει μόνο μια στιγμιαία κατάσταση των ενεργών διεργασιών. Το πρόγραμμα top εμφανίζει μια ακριβέστερη εικόνα με συνεχή ανανέωση των αποτελεσμάτων της ps (με πολλές επιλογές) κάθε πέντε δευτερόλεπτα, κατατάσσοντας τις διεργασίες με βάση το φόρτο που επιφέρουν στο σύστημα, και με πληροφορίες σχετικά με τη χρήση του χώρου εναλλαγής, τη κατάσταση της CPU, της μνήμης κλπ:

 12:40pm up 9 days, 6:00, 4 users, load average: 0.21, 0.11, 0.03
89 processes: 86 sleeping, 3 running, 0 zombie, 0 stopped
CPU states:  2.5% user,  1.7% system,  0.0% nice, 95.6% idle
Mem:   255120K av, 239412K used, 15708K free, 756K shrd, 22620K buff
Swap: 1050176K av, 76428K used, 973748K free, 82756K cached
  PID USER  PRI NI SIZE  RSS SHARE STAT %CPU %MEM TIME COMMAND
 5005 root  14  0 91572  15M 11580 R    1.9  6.0  7:53 X
19599 jeff  14  0  1024 1024   796 R    1.1  0.4  0:01 top
19100 jeff   9  0  5288 4948  3888 R    0.5  1.9  0:24 gnome-terminal
19328 jeff   9  0 37884  36M 14724 S    0.5 14.8  1:30 mozilla-bin
    1 root   8  0   516  472   464 S    0.0  0.1  0:06 init
    2 root   9  0     0    0     0 SW   0.0  0.0  0:02 keventd
    3 root   9  0     0    0     0 SW   0.0  0.0  0:00 kapm-idled
    4 root  19 19     0    0     0 SWN  0.0  0.0  0:00 ksoftirqd_CPU0
    5 root   9  0     0    0     0 SW   0.0  0.0  0:33 kswapd
    6 root   9  0     0    0     0 SW   0.0  0.0  0:00 kreclaimd
    7 root   9  0     0    0     0 SW   0.0  0.0  0:00 bdflush
    8 root   9  0     0    0     0 SW   0.0  0.0  0:05 kupdated
    9 root  -1-20     0    0     0 SW<  0.0  0.0  0:00 mdrecoveryd
   13 root   9  0     0    0     0 SW   0.0  0.0  0:01 kjournald
   89 root   9  0     0    0     0 SW   0.0  0.0  0:00 khubd
  219 root   9  0     0    0     0 SW   0.0  0.0  0:00 kjournald
  220 root   9  0     0    0     0 SW   0.0  0.0  0:00 kjournald

Η πρώτη σειρά της λίστας της top περιέχει κάποιες πληροφορίες που εμφανίζονται με την εντολή uptime:

jeff:~> uptime
  3:30pm, up 12 days, 23:29, 6 users, load average: 0.01, 0.02, 0.00
      

Τα δεδομένα αυτών των προγραμμάτων αποθηκεύονται μεταξύ άλλων στο /var/run/utmp (συνδεδεμένοι χρήστες) και στο εικονικό σύστημα αρχείων /proc, για παράδειγμα στο /proc/loadavg (πληροφορίες μέσου φόρτου). Υπάρχουν αρκετοί γραφικοί τρόποι εμφάνισης αυτών των δεδομένων, όπως ο Gnome System Monitor και τα lavaps. Στους ιστοτόπους FreshMeat και SourceForge θα βρείτε δεκάδες εφαρμογές που συγκεντρώνουν αυτές τις πληροφορίες και άλλες καταγραφές δεδομένων διακομιστή, επιτρέποντας, για παράδειγμα, τη παρακολούθηση πολλών συστημάτων μέσω ενός ειδικού ιστοτόπου.

Οι σχέσεις μεταξύ διεργασιών μπορούν να εμφανιστούν με την εντολή pstree:

sophie:~> pstree
init-+-amd
     |-apmd
     |-2*[artsd]
     |-atd
     |-crond
     |-deskguide_apple
     |-eth0
     |-gdm---gdm-+-X
     |           `-gnome-session-+-Gnome
     |                           |-ssh-agent
     |                           `-true
     |-geyes_applet
     |-gkb_applet
     |-gnome-name-serv
     |-gnome-smproxy
     |-gnome-terminal-+-bash---vim
     |                |-bash
     |                |-bash---pstree
     |                |-bash---ssh
     |                |-bash---mozilla-bin---mozilla-bin---3*[mozilla-bin]
     |                `-gnome-pty-helper
     |-gpm
     |-gweather
     |-kapm-idled
     |-3*[kdeinit]
     |-keventd
     |-khubd
     |-5*[kjournald]
     |-klogd
     |-lockd---rpciod
     |-lpd
     |-mdrecoveryd
     |-6*[mingetty]
     |-8*[nfsd]
     |-nscd---nscd---5*[nscd]
     |-ntpd
     |-3*[oafd]
     |-panel
     |-portmap
     |-rhnsd
     |-rpc.mountd
     |-rpc.rquotad
     |-rpc.statd
     |-sawfish
     |-screenshooter_a
     |-sendmail
     |-sshd---sshd---bash---su---bash
     |-syslogd
     |-tasklist_applet
     |-vmnet-bridge
     |-xfs
     `-xinetd-ipv6
      

Οι επιλογές -u και -a δίνουν παραπάνω πληροφορίες. Για περισσότερες πληροφορίες, δείτε τις σελίδες τεκμηρίωσης.

Στην επόμενη ενότητα θα δούμε πώς μια διεργασία μπορεί να δημιουργήσει άλλες διεργασίες.


4.1.5. Ζωή και θάνατος μιας διεργασίας

4.1.5.1. Δημιουργία διεργασίας

Μια νέα διεργασία δημιουργείται επειδή μια υπάρχουσα διεργασία κάνει ένα ακριβές αντίγραφο του εαυτού της. Η νέα διεργασία – παιδί, έχει το ίδιο περιβάλλον εργασίας με τη διεργασία – γονέα, διαφέρουν μόνο στον αριθμό διεργασίας (process ID). Αυτή η διαδικασία λέγεται διακλάδωση (forking).

Μετά τη διακλάδωση, ο χώρος διευθύνσεων της διεργασίας – παιδί ενημερώνεται με τα νέα δεδομένα της διεργασίας. Αυτό γίνεται με μια κλήση exec του συστήματος.

Ο μηχανισμός fork-and-exec μεταφέρει την εκτέλεση από τη παλιά εντολή στη νέα, ενώ το νέο πρόγραμμα κληρονομεί το περιβάλλον εκτέλεσης παραμένει το ίδιο, συμπεριλαμβανομένων των συσκευών εισόδου και εξόδου, μεταβλητές περιβάλλοντος και προτεραιότητα. Αυτός ο μηχανισμός χρησιμοποιείται στο UNIX και στο Linux. Ακόμη και η πρώτη διεργασία η init, με αριθμό (process ID) 1, διακλαδώνεται κατά τη διαδικασία εκκίνησης σε μια διαδικασία που λέγεται bootstrapping.

Αυτό το σχήμα δείχνει τη διαδικασία του μηχανισμού fork-and-exec. Ο αριθμός της διεργασίας αλλάζει μετά τη διακλάδωση:

Εικόνα 4-1. Μηχανισμός fork-and-exec

Υπάρχουν μερικές περιπτώσεις που η init γίνεται γονέας μιας διεργασίας, αν και αυτή δεν ξεκίνησε από την init, όπως ήδη είδαμε στο παράδειγμα με το pstree. Πολλά προγράμματα, λόγου χάρη, δαιμονοποιούν (daemonize) τις διεργασίες παιδιά τους, ώστε να εξακολουθήσουν να εκτελούνται ακόμη και όταν η πατρική διεργασία σταματήσει. Ένας διαχειριστής παραθύρων είναι ένα τυπικό παράδειγμα: ξεκινά μια διεργασία xterm η οποία δημιουργεί ένα φλοιό που δέχεται εντολές. Στη συνέχεια ο διαχειριστής παραθύρων αρνείται κάθε ευθύνη και περνά τη διεργασία στην init. Με αυτό το μηχανισμό, είναι δυνατό να αλλάξουμε διαχειριστή παραθύρων χωρίς να διακόψουμε εκτελούμενες εφαρμογές.

Αραιά και πού κάτι πάει στραβά, ακόμη και στις καλύτερες οικογένειες. Σε αυτή την εξαιρετική περίπτωση, μια διεργασία μπορεί να τερματιστεί αλλά η γονική διεργασία να μην περιμένει το τερματισμό της (να έχει ήδη τερματιστεί και αυτή). Τέτοιες διεργασίες που δεν έχουν τερματιστεί κανονικά ονομάζονται διεργασίες zombie.


4.1.5.2. Τερματισμός διεργασιών

Όταν μια διεργασία τερματιστεί κανονικά (δεν σταματά με kill ή δεν διακόπτεται απρόοπτα), επιστρέφει τη κατάσταση εξόδου (exit status) στη γονική διεργασία. Η κατάσταση εξόδου είναι ένας αριθμός που παρέχει κάποιες πληροφορίες σχετικές με την εκτέλεση της διεργασίας παιδιού. Το σύστημα αυτό της επιστροφής πληροφοριών κατά την έξοδο προέρχεται από τη γλώσσα προγραμματισμού C στην οποία είναι γραμμένο το UNIX (και το Linux).

Οι κωδικοί επιστροφής (καταστάσεις εξόδου) μπορούν να ερμηνευτούν από τη διεργασία γονέα ή από ειδικά σενάρια φλοιού. Οι τιμές των κωδικών εξαρτώνται από την εφαρμογή. Η σχετική πληροφορία μπορεί να βρεθεί στις σελίδες τεκμηρίωσης του συγκεκριμένου προγράμματος, για παράδειγμα η εντολή grep επιστέφει -1 αν δεν υπάρξει καμιά ταύτιση, οπότε η διεργασία γονέας θα μπορούσε να εμφανίσει ένα μήνυμα της μορφής "No files found". Ένα άλλο παράδειγμα είναι η ενσωματωμένη στο Bash εντολή true, που δεν κάνει τίποτε άλλο από το να επιστρέφει κατάσταση εξόδου 0, δηλαδή επιτυχία.


4.1.5.3. Σήματα

Οι διεργασίες τερματίζουν επειδή λαμβάνουν ένα σήμα. Υπάρχουν πολλά σήματα που μπορείτε να στείλετε σε μια διεργασία. Η εντολή kill χρησιμοποιείται για την αποστολή σημάτων. Η επιλογή kill -l εμφανίσει μια λίστα από σήματα. Τα περισσότερα από αυτά είναι για εσωτερική χρήση του συστήματος, ή για προγραμματιστές που γράφουν κώδικα συστήματος. Ως χρήστης θα χρειαστείτε τα παρακάτω σήματα:

Table 4-2. Συνηθισμένα σήματα

Όνομα σήματος

Αριθμός σήματος

Σημασία

SIGTERM

15

Κανονικός τερματισμός διεργασίας.

SIGINT

2

Διακοπή διεργασίας. Η διεργασία μπορεί να αγνοήσει αυτό το σήμα.

SIGKILL

9

Διακοπή διεργασίας. Η διεργασία δεν μπορεί να αγνοήσει αυτό το σήμα.

SIGHUP

1

Για δαίμονες: ξαναδιάβασε το αρχείο διαμόρφωσης.

Μπορείτε να διαβάσετε περισσότερα για τις διαδικασίες αποστολής και παραλαβής σήματος με τη man 7 signal.


4.1.6. SUID και SGID

Όπως υποσχεθήκαμε στο προηγούμενο κεφάλαιο, τώρα θα συζητήσουμε σε μεγαλύτερη λεπτομέρεια τις ειδικές μεθόδους SUID και SGID. Αυτές οι μέθοδοι υπάρχουν για να παρέχουν στους απλούς χρήστες τη δυνατότητα να εκτελούν εργασίες που κανονικά δεν θα μπορούσαν λόγω του σχήματος αδειών πρόσβασης των συστημάτων UNIX. Ιδανικά οι ειδικοί τύποι χρησιμοποιούνται όσο πιο σπάνια γίνεται, αφού περιέχουν κινδύνους ασφάλειας. Οι προγραμματιστές του Linux γενικά τους απέφυγαν όσο ήταν δυνατό. Για παράδειγμα η έκδοση Linux της ps, χρησιμοποιεί τη πληροφορία που βρίσκεται στο σύστημα αρχείων /proc, η οποία είναι προσβάσιμη από όλους, και έτσι αποφεύγει την έκθεση ευαίσθητων δεδομένων και πόρων του συστήματος στο ευρύ κοινό. Παλιότερα, ή ακόμη και σήμερα σε μερικά συστήματα UNIX, το πρόγραμμα της ps έπρεπε να προσπελάσει αρχεία σαν τα /dev/mem και dev/kmem, που είχε μειονεκτήματα εξ' αιτίας των αδειών πρόσβασης αυτών των αρχείων:

rita:~> ls -l /dev/*mem
crw-r-----    1 root     kmem       1,   2 Aug 30 22:30 /dev/kmem
crw-r-----    1 root     kmem       1,   1 Aug 30 22:30 /dev/mem
      

Σε παλιότερες εκδόσεις του ps, δεν ήταν δυνατό να ξεκινήσει κανείς το πρόγραμμα σαν απλός χρήστης, εκτός αν εφαρμοζόταν ειδικές μέθοδοι.

Εν και γενικά προσπαθούμε να αποφύγουμε τη χρήση ειδικών μεθόδων, μερικές φορές είναι αναγκαίο να χρησιμοποιήσουμε το SUID. Ένα παράδειγμα είναι ο μηχανισμός αλλαγής κωδικών πρόσβασης. Φυσικά οι χρήστες θέλουν να κάνουν αυτή τη δουλειά μόνοι τους αντί να αφήσουν στον διαχειριστή του συστήματος. Όπως γνωρίζουμε, τα ονόματα χρηστών και οι κωδικοί πρόσβασης βρίσκονται στο αρχείο /etc/passwd, που έχει τις παρακάτω άδειες πρόσβασης και ιδιοκτήτες:

bea:~> ls -l /etc/passwd
-rw-r--r--    1 root     root     1267 Jan 16 14:43 /etc/passwd
      

Παρ' όλα αυτά οι χρήστες πρέπει να μπορούν να μεταβάλουν ορισμένες από τις δικές τους πληροφορίες στο συγκεκριμένο αρχείο. Αυτό επιτυγχάνεται δίνοντας ειδικά δικαιώματα πρόσβασης στο πρόγραμμα passwd:

mia:~> which passwd
passwd is /usr/bin/passwd

mia:~> ls -l /usr/bin/passwd
-r-s--x--x    1 root     root    13476 Aug  7 06:03 /usr/bin/passwd*
      

Όταν καλείται, η εντολή passwd εκτελείται με δικαιώματα root, επιτρέποντας έτσι τον απλό χρήστη να τροποποιήσει το αρχείο με τους κωδικούς πρόσβασης που έχει ιδιοκτήτη τον υπέρ-χρήστη.

Οι μέθοδοι SGID σε ένα αρχείο δεν συμβαίνουν τόσο συχνά όσο οι μέθοδοι SUID, γιατί οι SGID συχνά απαιτούν τη δημιουργία ειδικών ομάδων. Σε μερικές περιπτώσεις, όμως, είναι αναγκαίο να μπούμε σε αυτό το κόπο για να κτίσουμε μια κομψή λύση (μην ανησυχείτε ιδιαίτερα – οι αναγκαίες ομάδες συνήθως δημιουργούνται κατά την εγκατάσταση). Αυτή είναι η περίπτωση των προγραμμάτων write και wall, που χρησιμοποιούνται για την αποστολή μηνυμάτων στα τερματικά άλλων χρηστών (ttys). Η εντολή write στέλνει μηνύματα σε ένα χρήστη, ενώ η wall στέλνει σε writes όλους τους συνδεδεμένους χρήστες.

Η αποστολή κειμένου στο τερματικό ενός άλλου χρήστη κανονικά δεν επιτρέπεται. Για να ξεπεράσουμε το πρόβλημα, δημιουργείται μια ομάδα, που είναι ιδιοκτήτρια όλων των τερματικών συσκευών. Οι εντολές write και wall λαμβάνουν άδειες πρόσβασης SGID, επομένως έχουν δικαιώματα πρόσβασης στις συσκευές tty. Έτσι, ο χρήστης που καλεί αυτές τις εντολές, αν και δεν έχει δικαιώματα να γράψει σε κάποιο άλλο τερματικό, μπορεί να στείλει τα μηνύματα.

Στο παρακάτω παράδειγμα, ο χρήστης joe πρώτα βρίσκει σε ποιο τερματικό είναι συνδεδεμένος ο χρήστης που τον ενδιαφέρει, μέσω της εντολής who. Μετά στέλνει ένα μήνυμα με την εντολή write. Επίσης φαίνονται τα δικαιώματα πρόσβασης στο πρόγραμμα write και στα τερματικά που χρησιμοποιεί ο παραλήπτης: είναι καθαρό οτι μόνο ο ιδιοκτήτης έχει δικαιώματα στις συσκευές αυτές, με εξαίρεση την ειδική ομάδα που μπορεί να γράψει σε όλες τις συσκευές.

joe:~> which write
write is /usr/bin/write

joe:~> ls -l /usr/bin/write
-rwxr-sr-x    1 root     tty      8744 Dec  5 00:55 /usr/bin/write*

joe:~> who
jenny     tty1     Jan 23 11:41
jenny     pts/1    Jan 23 12:21 (:0)
jenny     pts/2    Jan 23 12:22 (:0)
jenny     pts/3    Jan 23 12:22 (:0)
joe       pts/0    Jan 20 10:13 (lo.callhost.org)

joe:~> ls -l /dev/tty1
crw--w----    1 jenny   tty  4,     1 Jan 23 11:41 /dev/tty1

joe:~> write jenny tty1
hey Jenny, shall we have lunch together?
^C
      

Η χρήστης jenny λαμβάνει στο τερματικό της το παρακάτω μήνυμα:

Message from joe@lo.callhost.org on ptys/1 at 12:36 ...
hey Jenny, shall we have lunch together?
EOF

Μετά τη παραλαβή του μηνύματος, η οθόνη μπορεί να καθαριστεί με Ctrl+L. Για να μη λαμβάνουμε καθόλου μηνύματα (εκτός από αυτά του διαχειριστή συστήματος), χρησιμοποιούμε την εντολή mesg. Για να δούμε ποιοι συνδεδεμένοι χρήστες δέχονται μηνύματα από άλλους χρησιμοποιούμε την εντολή who -w. Για περισσότερες πληροφορίες δείτε τις σελίδες τεκμηρίωσης.

Τα ονόματα ομάδων μπορεί να διαφέρουν
Το σχήμα των ομάδων είναι διαφορετικό σε κάθε διανομή Linux. Μπορεί να έχουν άλλα ονόματα και διαφορετική δομή.


4.2. Εκκίνηση, αρχικοποίηση, τερματισμός

4.2.1. Εισαγωγή

Μια από τις πιο δυνατές πλευρές του Linux αφορά την ανοικτή μέθοδο εκκίνησης και τερματισμού του λειτουργικού συστήματος, όπου φορτώνει τα καθορισμένα προγράμματα με τις ειδικές ρυθμίσεις τους. Ο χρήστης έχει τη δυνατότητα να παρέμβει τόσο στα προγράμματα όσο και στις ρυθμίσεις και με αυτό τον τρόπο να ελέγξει την εκκίνηση και τον τερματισμό, έτσι ώστε όλα να γίνονται όμορφα και οργανωμένα.

Πέρα από το θέμα του ελέγχου της εκκίνησης και του τερματισμού, η ανοικτή φύση του Linux διευκολύνει πολύ τον εντοπισμό των περισσότερων προβλημάτων εκκίνησης και τερματισμού. Μια βασική κατανόηση αυτών των διαδικασιών είναι ωφέλιμη για όλους όσοι χρησιμοποιούν Linux. Τη διαχείριση της εκκίνησης του συστήματος την αναλαμβάνει ένας boot loader. Παλαιότερα, πολλά συστήματα χρησιμοποιούσαν τον Linux Loader (lilo). Οι σύγχρονες διανομές χρησιμοποιούν στην πλειοψηφία τους το GRUB.


4.2.2. Η εκκίνηση

Όταν ξεκινά ένας υπολογιστής x86, η CPU κοιτάζει στο τέλος της μνήμης συστήματος για το BIOS (Basic Input/Output System) και το εκτελεί. Το πρόγραμμα BIOS είναι αποθηκευμένο στη ROM και έτσι είναι πάντα διαθέσιμο. Το BIOS παρέχει διεπαφή χαμηλού επιπέδου για τις περιφερειακές συσκευές και ελέγχει το πρώτο βήμα της εκκίνησης.

Το BIOS ελέγχει το σύστημα, μετά τα περιφερειακά και στη συνέχεια ψάχνει για έναν οδηγό για να φορτώσει το λειτουργικό σύστημα. Συνήθως ελέγχει για οδηγό δισκέτας (σε παλιότερα συστήματα), οδηγό CD-ROM (σε νεότερα) και για άλλα φορητά μέσα αποθήκευσης (DVD-ROM, USB θύρα, ΣτΜ), και, φυσικά για οδηγούς σκληρού δίσκου. Η σειρά αναζήτησης οδηγών καθορίζεται στο BIOS και μπορεί να τροποποιηθεί από τον χρήστη πριν την εκκίνηση. Αφού εγκατασταθεί το Linux σε ένα σκληρό δίσκο του συστήματος, το BIOS αναζητά τη Κύρια Εγγραφή Εκκίνησης (Master Boot Record -MBR) που ξεκινά στο πρώτο τομέα του πρώτου δίσκου, φορτώνει τα περιεχόμενά της στη μνήμη, και περνά τον έλεγχο σε αυτή.

Η MBR περιέχει εντολές για τον τρόπο φόρτωσης του φορτωτή εκκίνησης GRUB (ή του LILO), και για το προ-επιλεγμένο λειτουργικό σύστημα. Στη συνέχεια η MBR φορτώνει τον φορτωτή εκκίνησης που συνεχίζει τη διαδικασία (συνήθως ο φορτωτής εκκίνησης είναι εγκατεστημένος και αυτός στην MBR). Το GRUB είτε εμφανίζει κάποιο μενού με επιλογές ή -μετά από μικρή αναμονή- συνεχίζει τη διαδικασία εκκίνησης. Με βάση είτε τις επιλογές του μενού ή τις προ-καθορισμένες επιλογές το λειτουργικό σύστημα ξεκινά, είτε γραφικά είτε από τη γραμμή εντολών, με βάση το αρχείο διαμόρφωσης.


4.2.3. Χαρακτηριστικά του GRUB

Αυτή η μέθοδος εκκίνησης αυτή λέγεται ευθεία φόρτωση (direct loading) επειδή ο φορτωτής εκκίνησης ξεκινά απ' ευθείας το λειτουργικό σύστημα, χωρίς άλλο ενδιάμεσο κώδικα μεταξύ του φορτωτή εκκίνησης και των κύριων αρχείων του λειτουργικού συστήματος (όπως ο πυρήνας). Όμως, η διαδικασία εκκίνησης άλλων λειτουργικών συστημάτων μπορεί να διαφέρει λίγο. Για παράδειγμα τα λειτουργικά συστήματα της Microsoft, DOS και Windows, όταν εγκαθίστανται διαγράφουν οτιδήποτε υπάρχει ήδη στην MBR. Αυτό καταστρέφει τις πληροφορίες για άλλο λειτουργικά συστήματα που πιθανώς να υπήρχαν στην MBR, όπως το Linux. Τα λειτουργικά συστήματα της Microsoft, καθώς και άλλα ιδιόκτητα λειτουργικά συστήματα, χρησιμοποιούν την μέθοδο εκκίνησης που λέγεται αλυσιδωτή φόρτωση. Σε αυτή τη μέθοδο η MBR δείχνει στο πρώτο τομέα του διαμερίσματος που βρίσκεται το λειτουργικό σύστημα, όπου υπάρχουν ειδικά αρχεία που συνεχίζουν τη διαδικασία εκκίνησης.

Το GRUB υποστηρίζει και τις δύο μεθόδους εκκίνησης, επιτρέποντας έτσι τον συνδυασμό του με σχεδόν όλα τα λειτουργικά συστήματα, και με όλους τους οδηγούς που αναγνωρίζει το BIOS του υπολογιστή σας.

Το GRUB έχει και αρκετά ακόμη χαρακτηριστικά, τα πιο σημαντικά είναι:

Μια πλήρης περιγραφή του GRUB μπορεί να βρεθεί με την εντολή info grub ή στον ιστοτόπο του GRUB. Στο Linux Documentation Project υπάρχει το Multiboot with GRUB Mini-HOWTO.


4.2.4. Init

Ο πυρήνας, αφού φορτωθεί, βρίσκει την init στο sbin και την εκτελεί.

/sbin/init

Η init είναι η διεργασία γονέας όλων των διεργασιών του συστήματος, εκτελείται από τον πυρήνα και είναι υπεύθυνη για την εκκίνηση όλων των άλλων διεργασιών.Το πρώτο πράγμα που κάνει η init είναι να διαβάσει το αρχείο αρχικοποίησης, που θα φροντίσει για όλα τα απαραίτητα της αρχικοποίησης, ρυθμίσεις ρολογιού, σειριακών θυρών κλπ.

Μετά η init συνεχίζει διαβάζοντας αρχεία που περιγράφουν την κατάσταση του συστήματος σε κάθε επίπεδο εκτέλεσης (run level) και θέτει το προεπιλεγμένο επίπεδο εκτέλεσης. Ένα επίπεδο εκτέλεσης (runlevel) είναι η διαμόρφωση ενός συνόλου διεργασιών. Όλα τα συστήματα UNIX μπορούν να εκτελεστούν με διαφορετικές διαμορφώσεις/ρυθμίσεις διεργασιών, όπως σε κατάσταση ενός χρήστη (single user mode), που αναφέρεται ως επίπεδο εκτέλεσης 1 ή S (ή s). Σε αυτή τη κατάσταση, μόνο ο υπερ-χρήστης (διαχειριστής συστήματος) μπορεί να συνδεθεί στο σύστημα. Χρησιμοποιείται για εργασίες συντήρησης χωρίς κίνδυνο καταστροφής του συστήματος ή των δεδομένων των χρηστών. Φυσικά, σε αυτό το επίπεδο εκτέλεσης δεν απαιτούνται υπηρεσίες χρηστών, επομένως δεν εκτελούνται. Ένα άλλο επίπεδο εκτέλεσης είναι αυτό της επανεκκίνησης, ή επίπεδο εκτέλεσης 6, που κλείνει όλες τις εκτελούμενες υπηρεσίες με τις κατάλληλες διαδικασίες και επανεκκινεί το σύστημα.

Για να δούμε το τρέχον επίπεδο εκτέλεσης χρησιμοποιούμε τη εντολή who:

willy@ubuntu:~$ who -r
        run-level 2 2006-10-17 23:22            last=S
      

Στην επόμενη ενότητα θα πούμε περισσότερα για τα επίπεδο εκτέλεσης, Ενότητα 4.2.5.

Αφού καθοριστεί το προεπιλεγμένο επίπεδο εκτέλεσης του συστήματος, η init ξεκινά όλες τις διεργασίες παρασκηνίου που είναι απαραίτητες για το σύστημα με βάση το κατάλληλο κατάλογο rc του αντίστοιχου επιπέδου εκτέλεσης. Πρώτα η init εκτελεί όλα τα σενάρια φλοιού τερματισμού (kill scripts, τα ονόματα των αρχείων αυτών αρχίζουν με K). Μετά εκτελεί όλα τα σενάρια φλοιού εκκίνησης (start scripts, τα ονόματα των αρχείων ξεκινούν με S και βρίσκονται στο φάκελο /etc/rcK.d). Όλα τα scripts που βρίσκονται σε αυτούς τους καταλόγους είναι symbolic links στο φάκελο /etc/init.d/. Μπορούμε να εκτελέσουμε τα ίδια σενάρια φλοιού μεμονωμένα, μετά το τέλος της εκκίνησης με εντολές του τύπου /etc/init.d/httpd stop ή service httpd stop και /etc/init.d/httpd start ή service httpd start και εφ' όσον έχουμε δικαιώματα υπερ-χρήστη (root, αυτό γίνετε με sudo). Στη συγκεκριμένη περίπτωση σταματούμε και ξεκινούμε τον διακομιστή ιστού.

runlevel 2

Ειδική περίπτωση
Σημειώστε οτι στην εκκίνηση του συστήματος, εκτελούνται τα σενάρια φλοιού στους καταλόγους rc2.d και rc3.d. Συνήθως περιλαμβάνονται μόνο εκκινήσεις υπηρεσιών.

Κανένα από τα σενάρια φλοιού δεν βρίσκονται πραγματικά στους καταλόγους /etc/rc<x>.d. Τα αρχεία που είναι στους καταλόγους /etc/rc<x>.d είναι συμβολικοί σύνδεσμοι που δείχνουν στα πραγματικά σενάρια που βρίσκονται στον κατάλογο /etc/init.d. Ένας συμβολικός σύνδεσμος δεν είναι τίποτε παραπάνω από ένα αρχείο που δείχνει σε ένα άλλο αρχείο, και χρησιμοποιείται σε αυτή τη περίπτωση γιατί έτσι μπορούμε να μεταβάλλουμε τις διαμορφώσεις των επιπέδων εκτέλεσης χωρίς να παρεμβαίνουμε στα ίδια τα σενάρια που ξεκινούν ή σταματούν τις υπηρεσίες. Οι συμβολικοί σύνδεσμοι είναι αριθμημένοι με συγκεκριμένη σειρά έτσι ώστε να ξεκινούν με αυτή τη σειρά. Μπορείτε να αλλάξετε τη σειρά τερματισμού ή εκκίνησης των υπηρεσιών αν αλλάξετε τα ονόματα των αρχείων των αντίστοιχων σεναρίων. Μπορείτε να χρησιμοποιήσετε τον ίδιο αριθμό πολλές φορές, οπότε μια υπηρεσία ξεκινά ή σταματά ακριβώς πριν ή μετά κάποια άλλη (με αλφαβητική σειρά). Παρακάτω φαίνονται τα περιεχόμενα του καταλόγου /etc/rc5.d, όπου οι υπηρεσίες crond και xfs ξεκινούν από ένα σύνδεσμο που αρχίζει από "S90".

[jean@blub /etc/rc5.d] ls
K15httpd@     K45named@    S08ipchains@  S25netfs@      S85gpm@
K16rarpd@     K46radvd@    S08iptables@  S26apmd@       S90crond@
K20nfs@       K61ldap@     S09isdn@      S28autofs@     S90xfs@
K20rstatd@    K65identd@   S10network@   S30nscd@       S95anacron@
K20rusersd@   K74ntpd@     S12syslog@    S55sshd@       S95atd@
K20rwalld@    K74ypserv@   S13portmap@   S56rawdevices@ S97rhnsd@
K20rwhod@     K74ypxfrd@   S14nfslock@   S56xinetd@     S99local@
K25squid@     K89bcm5820@  S17keytable@  S60lpd@
K34yppasswdd@  S05kudzu@    S20random@    S80sendmail@
      

Αφού η init προχωρήσει μέσα από τα επίπεδα εκτέλεσης για να φθάσει στο προεπιλεγμένο επίπεδο εκτέλεσης, δημιουργεί μια διεργασία getty για κάθε εικονική κονσόλα (παράθυρο τερματικού). Η getty ανοίγει γραμμές tty (τερματικών, teletype), καθορίζει τη κατάστασή τους, εμφανίζει τη προτροπή σύνδεσης, λαμβάνει το όνομα χρήστη, και ξεκινά τη διαδικασία σύνδεσης για το συγκεκριμένο χρήστη. Έτσι μπορούμε να χρησιμοποιήσουμε το σύστημα. Εξ' ορισμού τα περισσότερα συστήματα προσφέρουν 6 εικονικές κονσόλες.

Στα Linux τύπου Debian, υπάρχει ένα σενάριο /etc/X11/default-display-manager που καθορίζει ποιος διαχειριστής γραφικών θα ξεκινήσει . Περισσότερα για τη γραφική διεπαφή θα δούμε στην Ενότητα 7.3. Τελικά, η τεκμηρίωση του συστήματός σας εξηγεί λεπτομέρειες για ανώτερες πλευρές της init.

Ο κατάλογος /etc/default περιέχει αρχεία διαμόρφωσης για πολλές υπηρεσίες και λειτουργίες, και διαβάζονται κατά την εκκίνηση. Η ακριβής ονομασία και τοποθεσία των καταλόγων εξαρτάται από τη διανομή του Linux.

Εκτός από τη γραφική διεπαφή, ξεκινούν και άλλες υπηρεσίες. Αν όμως όλα έχουν πάει καλά, όταν τελειώσει η διαδικασία εκκίνησης θα πρέπει να βλέπετε τη προτροπή κειμένου ή τη γραφική προτροπή σύνδεσης.

Άλλες διαδικασίες
Εξηγήσαμε πώς δουλεύει η SysV init σε μηχανές τύπου x86. Οι διαδικασίες εκκίνησης μπορεί να διαφέρουν ανάλογα με τις αρχιτεκτονικές και τις διανομές. Άλλα συστήματα μπορεί να χρησιμοποιούν τη BSD init, όπου τα αρχεία εκκίνησης δεν διαμοιράζονται σε πολλαπλούς καταλόγους /etc/rc<LEVEL>.d. Μπορεί επίσης το σύστημά σας να χρησιμοποιεί τους καταλόγους /etc/rc.d/init.d αντί για τους /etc/init.d.


4.2.5. Επίπεδα εκτέλεσης

Η ιδέα πίσω από τις διαφορετικές υπηρεσίες που εκτελούνται σε διάφορα επίπεδα εκτέλεσης ουσιαστικά περιστρέφεται γύρω από το γεγονός ότι ένα σύστημα μπορεί να χρησιμοποιηθεί με διαφορετικούς τρόπους. Μερικές υπηρεσίες δεν μπορούν να χρησιμοποιηθούν μέχρι το σύστημα να βρεθεί στην κατάλληλη κατάσταση (mode), όπως εξυπηρέτηση πολλών χρηστών ή δικτύωση.

Υπάρχουν περιπτώσεις που θέλουμε να λειτουργήσουμε ένα σύστημα σε χαμηλότερη κατάσταση. Για παράδειγμα, η διόρθωση προβλημάτων ενός δίσκου γίνεται στο επίπεδο εκτέλεσης 1, ώστε να μη μπορεί άλλος χρήστης να συνδεθεί στο σύστημα , ή αν δεν θέλουμε να ξεκινήσουμε γραφική διεπαφή X αφήνουμε τον διακομιστή στο επίπεδο εκτέλεσης 3. Σε αυτές τις περιπτώσεις υπηρεσίες που εξαρτώνται από ανώτερα επίπεδα εκτέλεσης δεν έχουν νόημα αφού δεν μπορούν να λειτουργήσουν σωστά έτσι κι αλλιώς. Έχοντας ομαδοποιήσει τις υπηρεσίες στα διάφορα επίπεδα, είμαστε σίγουροι οτι θα έχουμε ορθή εκκίνηση υπηρεσιών, και οτι μπορούμε γρήγορα να αλλάξουμε επίπεδο εκτέλεσης χωρίς να ανησυχούμε αν θα ξεκινήσουν ή θα σταματήσουν σωστά οι υπηρεσίες.

Τα διαθέσιμα επίπεδα εκτέλεσης είναι :

Μπορούμε να διαμορφώσουμε τα μη-χρησιμοποιούμενα επίπεδα εκτέλεσης (συνήθως το επίπεδο 4) όπως εμείς νομίζουμε. Πολλοί χρήστες διαμορφώνουν τα επίπεδα εκτέλεσης με βάση τις ανάγκες τους, αφήνοντας αμετάβλητα τα προεπιλεγμένα επίπεδα.

Σημειώστε οτι η αλλαγή επιπέδων εκτέλεσης γίνεται κατά προτίμηση με την εντολή telinit.

Η παρούσα συζήτηση για τα επίπεδα εκτέλεσης, τα σενάρια φλοιού και τα αρχεία διαμόρφωσης είναι όσο πιο γενική γίνεται. Υπάρχουν πολλές παραλλαγές. Λόγου χάρη, το Gentoo Linux αποθηκεύει τα σενάρια στο κατάλογο /etc/run levels. Άλλα συστήματα μπορεί να εκτελούν πρώτα τα σενάρια χαμηλότερου(ων) επιπέδου(ων) πριν φθάσουν στο τελικό επίπεδο εκτέλεσης. Ανατρέξτε στη τεκμηρίωση του συστήματός σας για λεπτομέρειες. Θα μπορούσατε να διαβάσετε και τα ίδια τα σενάρια φλοιού για να αποκτήσετε καλύτερη αντίληψη του συστήματός σας.


4.2.5.1. Εργαλεία

Η υπηρεσία update-rc.d, αν είναι εγκατεστημένη στο σύστημά σας, παρέχει ένα εργαλείο γραμμής εντολών για τη διαχείριση της ιεραρχίας των καταλόγων /etc/init.d. Μπορείτε να προσθέσετε ή να αφαιρέσετε νέες υπηρεσίες στο /etc/init.d. Αυτές οι υπηρεσίες απαλλάσσουν τους διαχειριστές από την απ' ευθείας διαχείριση των πολυάριθμων συμβολικών συνδέσμων στους καταλόγους /etc/rc[x].d.

Επιπρόσθετα, μερικά συστήματα προσφέρουν το εργαλείο ntsysv, που προσφέρει μια διεπαφή κειμένου που μπορεί να βρείτε ευκολότερη από τις εντολές της chkconfig. Στο SuSE Linux, θα βρείτε το yast και το insserv. Στο Mandrake μπορείτε να δοκιμάσετε το DrakConf, που επιτρέπει μεταξύ των άλλων και αλλαγή μεταξύ των επιπέδων εκτέλεσης 3 και 5. Στο Mandriva λέγεται Mandriva Linux Control Center.

Οι περισσότερες διανομές παρέχουν κάποια γραφική διεπαφή, ανατρέξτε στη τεκμηρίωση του συστήματος.

Όλες αυτές οι υπηρεσίες για να εκτελεστούν απαιτούν να έχετε δικαιώματα υπερ-χρήστη.


4.2.6. Τερματισμός

Το UNIX δεν φτιάχτηκε για να σταματά, αλλά αν πραγματικά πρέπει να σταματήσετε το σύστημα, χρησιμοποιείστε την εντολή shutdown. Μετά τη διαδικασία τερματισμού, αν έχετε χρησιμοποιήσει την επιλογή -h το σύστημα θα κλείσει, ενώ αν έχετε χρησιμοποιήσει την επιλογή -r το σύστημα θα ξαναξεκινήσει. Για παράδειγμα για να τερματίσετε το συστημα σας μπορείτε να χρησιμοποιήσετε την εντολή :

sudo shutdown -h now

Οι εντολές reboot και halt καλούν την shutdown αν βρισκόμαστε στα επίπεδα 1-5, και έτσι διασφαλίζουμε σωστό κλείσιμο το συστήματος, αλλά γενικά καλύτερα να μη τις χρησιμοποιούμε, μια που δεν έχουν όλες οι εκδόσεις των UNIX/Linux αυτό το χαρακτηριστικό.

Αν ο υπολογιστής σας δεν κλείνει μόνος του, θα πρέπει να περιμένετε να τελειώσει η διαδικασία τερματισμού πριν κλείσετε το διακόπτη, για να δώσετε στο σύστημα το χρόνο να απο-προσαρτήσει τους δίσκους με ασφάλεια, αλλιώς κινδυνεύετε να χάσετε δεδομένα.


4.3. Διαχείριση διεργασιών

4.3.1. Δουλεύοντας για τον διαχειριστή συστήματος

Αν και η διαχείριση των πόρων του συστήματος, και των διεργασιών. είναι δουλειά του διαχειριστή συστήματος, είναι καλό ο απλός χρήστης να γνωρίζει ορισμένα βασικά πράγματα σχετικά, ειδικά όσον αφορά τις δικές του διεργασίες και τη βέλτιστη εκτέλεσή τους.

Θα εξηγήσουμε λίγο τη θεωρητική πλευρά της απόδοσης ενός συστήματος, αν και όχι σε τόσο βάθος ώστε να συζητήσουμε τη βελτιστοποίηση του υλικού. Αντί γι αυτό θα μελετήσουμε καθημερινά προβλήματα που συναντά ένας απλός χρήστης, και τις ενέργειες που πρέπει να κάνει για να χρησιμοποιήσει βέλτιστα τους υπάρχοντες πόρους. Όπως θα μάθουμε στην επόμενη ενότητα, κυρίως πρέπει να σκεφτόμαστε πριν δράσουμε.

Εικόνα 4-2. Δεν μπορείς να πας πιο γρήγορα;


4.3.2. Πόσο χρόνο παίρνει;

Το Bash παρέχει μια ενσωματωμένη εντολή time που εμφανίζει το χρόνο που χρειάστηκε μια εντολή για να εκτελεστεί. Η χρονομέτρηση είναι πολύ ακριβής και μπορεί να χρησιμοποιηθεί με κάθε εντολή. Στο παρακάτω παράδειγμα, απαιτεί περίπου ένα και μισό λεπτά για την προετοιμασία αυτού του βιβλίου:

tilly:~/xml/src> time make
Output written on abook.pdf (222 pages, 1619861 bytes).
Transcript written on abook.log.

real    1m41.056s
user    1m31.190s
sys     0m1.880s
      

Η GNU εντολή time στο /usr/bin (σε αντιδιαστολή με την ενσωματωμένη στο φλοιό) εμφανίζει περισσότερη πληροφορία και μπορεί να μορφοποιηθεί με διαφορετικούς τρόπους. Επίσης δείχνει τη κατάσταση εξόδου της εντολής, και τον συνολικό χρόνο που έχει διανυθεί. Το προηγούμενο παράδειγμα με την ανεξάρτητη εντολή time δίνει το αποτέλεσμα:

tilly:~/xml/src> /usr/bin/time make
Output written on abook.pdf (222 pages, 1595027 bytes).
Transcript written on abook.log.

Command exited with non-zero status 2
88.87user 1.74system 1:36.21elapsed 94%CPU 
                                (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (2192major+30002minor)pagefaults 0swaps
      

Μπορείτε να δοκιμάσετε και με απλές εντολές (π.χ. ls) στις οποίες οι χρόνοι εκτέλεσης είναι πολύ μικροί για να διαπιστώσετε την ακρίβεια των μετρήσεων. Δείτε τις σελίδες τεκμηρίωσης για περισσότερες πληροφορίες.


4.3.3. Απόδοση

Για ένα χρήστη, απόδοση σημαίνει γρήγορη εκτέλεση των εντολών. Για ένα διαχειριστή συστήματος, από την άλλη πλευρά, σημαίνει πολύ περισσότερα: ο διαχειριστής πρέπει να βελτιστοποιήσει την απόδοση του συστήματος ως σύνολο, δηλαδή για όλους τους χρήστες, προγράμματα και δαίμονες. Η απόδοση του συστήματος μπορεί να εξαρτάται από χιλιάδες μικρά πράγματα που δεν λαμβάνονται υπ' όψη στην εντολή time:


4.3.4. Φόρτος

Εν συντομία ο υπολογιστικός φόρτος εξαρτάται από το τι είναι κανονικό για το σύστημά σας. Ο παλιός μου P133 εκτελεί ένα firewall, ένα διακομιστή SSH, ένα διακομιστή αρχείων, ένα δαίμονα δρομολόγησης, ένα διακομιστή sendmail, ένα διακομιστή διαμεσολάβησης και μερικές άλλες υπηρεσίες και δεν παραπονιέται με συνδεδεμένους 7 χρήστες: ο φόρτος είναι ακόμη 0 κατά μέσο όρο. Μερικά συστήματα (με πολλές CPU) που έχω δει λειτουργούσαν μια χαρά με φόρτο 67. Υπάρχει μόνο ένας τρόπος να μάθετε – ελέγχετε τακτικά το φόρτο για να καταλάβετε τι είναι κανονικό για το σύστημά σας. Αν δεν το κάνετε, και μετράτε μόνο το χρόνο απόκρισης των εντολών, τότε θα έχετε μια πολύ χονδρική εκτίμηση της απόδοσης αφού η ταχύτητα επηρεάζεται από πολλούς παράγοντες.

Να έχετε στο μυαλό σας ότι διαφορετικά συστήματα συμπεριφέρονται διαφορετικά με τον ίδιο φόρτο. Για παράδειγμα, ένα σύστημα με κάρτα γραφικών που υποστηρίζει επιταχυντή υλικού δεν έχει πρόβλημα να κάνει rendering 3D εικόνων, ενώ το ίδιο σύστημα με φθηνή κάρτα VGA θα επιβραδύνεται πάρα πολύ αν εκτελεί rendering. Το παλιό μου P133 θα ταλαιπωρηθεί αν λειτουργήσει ως διακομιστής X, αλλά αν η πρόσβασή σας γίνεται μέσω modem μάλλον δεν θα καταλάβετε τη διαφορά.


4.3.5. Μπορώ να κάνω κάτι σαν χρήστης;

Αν έχετε ένα μεγάλο περιβάλλον μπορεί να σας καθυστερήσει. Αν έχετε πολλές μεταβλητές περιβάλλοντος (αντί για μεταβλητές φλοιού) και μεγάλες διαδρομές αναζήτησης που δεν έχουν βελτιστοποιηθεί (ή με λάθη στις διαδρομές), το σύστημα θα χρειάζεται περισσότερη ώρα για να αναζητά δεδομένα και εντολές.

Στο περιβάλλον X, οι διαχειριστές παραθύρων και οι επιφάνειες εργασίας μπορεί να είναι πραγματικά αδηφάγα για τη CPU. Μια 'γυαλιστερή' επιφάνεια εργασίας συνοδεύεται με κάποιο τίμημα, ακόμη και αν τη μεταφορτώνετε δωρεάν, αφού οι περισσότερες επιφάνειες εργασίας παρέχουν άπειρα πρόσθετα 'καλούδια'. Η μετριοπάθεια είναι αρετή, αν δεν αγοράζετε νέο υπολογιστή κάθε χρόνο.


4.3.5.1. Προτεραιότητα

Η προτεραιότητα ή σημαντικότητα μιας εργασίας ορίζεται από τον αριθμό ωραιοποίησης (nice). Ένα πρόγραμμα με μεγάλο αριθμό nice είναι φιλικό προς τα άλλα προγράμματα, τους χρήστες και το σύστημα: δεν είναι μια σημαντική εργασία. Όσο χαμηλότερο αριθμό nice έχει ένα πρόγραμμα, τόσο πιο σημαντική εργασία εκτελεί και τόσο πιο πολλούς πόρους θα πάρει.

Το να κάνει κανείς μια εργασία ωραιότερη είναι χρήσιμο μόνο για διεργασίες που χρησιμοποιούν πολύ χρόνο CPU (μεταγλωττιστές, μαθηματικές εφαρμογές, κλπ.). Προγράμματα που πάντα χρησιμοποιούν πολύ χρόνο Ε/Ε αυτόματα επιβραβεύονται από το σύστημα με υψηλότερη προτεραιότητα (χαμηλότερο αριθμό nice), για παράδειγμα η είσοδος από το πληκτρολόγιο παίρνει πάντα την υψηλότερη δυνατή προτεραιότητα στο σύστημα.

Ο ορισμός της προτεραιότητας ενός προγράμματος γίνεται με την εντολή nice.

Τα περισσότερα συστήματα παρέχουν και τη BSD εντολή renice, που επιτρέπει την μεταβολή της niceness μιας εκτελούμενης εντολής. Δείτε τις σελίδες τεκμηρίωσης για πληροφορίες ειδικές για κάθε σύστημα.

Διαλογικά προγράμματα
ΔΕΝ είναι καλή ιδέα να εφαρμόζουμε τις εντολές nice ή renice σε διαλογικά προγράμματα ή σε εργασίες που εκτελούνται στο προσκήνιο.

Η χρήση αυτών των εντολών είναι συνήθως δουλειά του διαχειριστή συστήματος. Δείτε τις σελίδες τεκμηρίωσης για την πρόσθετες δυνατότητες που διατίθενται στον υπερ-χρήστη.


4.3.5.2. Πόροι CPU

Σε κάθε σύστημα Linux, πολλά προγράμματα θέλουν να χρησιμοποιήσουν τη (ή τις) CPU ταυτόχρονα, ακόμη και αν είστε ο μοναδικός χρήστης. Κάθε πρόγραμμα χρειάζεται ορισμένους κύκλους CPU για να εκτελεστεί. Μερικές φορές μπορεί να μην υπάρχουν αρκετοί κύκλοι, αν η CPU είναι πολύ απασχολημένη. Η εντολή uptime είναι εξαιρετικά ανακριβής (εμφανίζει μόνο μέσους όρους, πρέπει να γνωρίζετε τι είναι κανονικό) αλλά παρ' όλα αυτά δεν είναι άχρηστη. Μπορείτε να κάνετε κάποιες ενέργειες αν πιστεύετε οτι φταίει η CPU για την αργοπορία του συστήματός σας:

Αν καμιά λύση δεν βοηθήσει, τότε πρέπει να αναβαθμίσετε το σύστημά σας.


4.3.5.3. Πόροι μνήμης

Όταν οι εκτελούμενες διεργασίες απαιτούν περισσότερη μνήμη από αυτή που είναι φυσικά διαθέσιμη, ένα Linux σύστημα δεν θα καταρρεύσει, αλλά θα αρχίσει την εναλλαγή σελίδων μνήμης (swapping), με χρήση του αντιστοίχου χώρου στο δίσκο (χώρος εναλλαγής, swap space), μετακινώντας περιεχόμενα της κύριας μνήμης (σελίδες μνήμης, δηλαδή δεδομένα που δεν χρησιμοποιούνται εκείνη τη στιγμή) προς τον δίσκο, ελευθερώνοντας έτσι μνήμη για νέες διεργασίες. Τα δεδομένα από το δίσκο επιστρέφουν στη κύρια μνήμη μόλις αυτό ζητηθεί. Αυτή η διαδικασία καθυστερεί σημαντικά το σύστημα, αφού η προσπέλαση στο δίσκο είναι πολύ πιο αργή από οτι στη κύρια μνήμη. Η εντολή top εμφανίζει τη χρήση της μνήμης και του χώρου εναλλαγής. Συστήματα που χρησιμοποιούν glibc παρέχουν τις εντολές memusage και memusagestat για την οπτικοποίηση της χρήσης μνήμης.

Αν δείτε οτι υπάρχει υπερβολική χρήση της μνήμης και του χώρου εναλλαγής μπορείτε να κάνετε κάτι από τα παρακάτω:


4.3.5.4. Πόροι Ε/Ε

Αν και οι περιορισμοί Ε/Ε είναι βασική πηγή προβλημάτων για τους διαχειριστές συστημάτων, το Linux παρέχει μάλλον φτωχές υπηρεσίες μέτρησης της απόδοσης Ε/Ε. Οι εντολές ps, vmstat και top tools δίνουν μερικές ενδείξεις για το πόσες διεργασίες περιμένουν για Ε/Ε. Η εντολή netstat εμφανίζει στατιστικά της διεπαφής δικτύου, αλλά δεν υπάρχουν εργαλεία για τη μέτρηση της απόκριση της Ε/Ε στο φόρτο του συστήματος, ενώ η εντολή iostat δίνει μια σύντομη εικόνα της γενικής χρήσης Ε/Ε. Υπάρχουν διάφορες γραφικές διεπαφές που εμφανίζουν το αποτέλεσμα αυτών των εντολών σε πιο κατανοητή μορφή.

Κάθε συσκευή έχει τα δικά της προβλήματα, αλλά το εύρος ζώνης των καρτών δικτύου και των δίσκων είναι δυο βασικές αιτίες συμφόρησης στην Ε/Ε.

Προβλήματα Ε/Ε δικτύου:

Προβλήματα Ε/Ε δίσκων:

Τέτοια προβλήματα είναι δύσκολο να διαγνωστούν, και συνήθως απαιτούν νέο υλικό για την ανακατανομή των ροών δεδομένων στους διαύλους, ελεγκτές και δίσκους. Μια λύση είναι η χρήση διάταξης δίσκων RAID με διαμόρφωση βελτιστοποιημένη για Ε/Ε. Συνήθως η άλλη λύση είναι η αναβάθμιση διαύλων, ελεγκτών και δίσκων.

Αν το πρόβλημα δεν είναι η υπερφόρτωση, πιθανώς το υλικό σας σταδιακά καταρρέει ή δεν είναι σωστά συνδεδεμένο. Ελέγξτε τις επαφές, συνδέσεις και πρίζες, κατ' αρχήν.


4.3.5.5. Χρήστες

Οι χρήστες μπορούν να χωριστούν σε διάφορες κατηγορίες, με βάση τη συμπεριφορά τους σχετικά με τη χρήση πόρων:

Μπορείτε να δείτε ότι οι απαιτήσεις της κάθε ομάδας χρηστών είναι διαφορετικές, και είναι δύσκολο να ικανοποιηθούν όλοι από το ίδιο σύστημα. Αν δουλεύετε σε ένα σύστημα πολλών χρηστών, είναι χρήσιμο να καταλάβετε τις συνήθειες των άλλων χρηστών έτσι ώστε να εκμεταλλευτείτε καλύτερα το σύστημα.


4.3.5.6. Γραφικά εργαλεία

Για το γραφικό περιβάλλον, υπάρχει διαθέσιμη μια πλειάδα γραφικών εργαλείων παρακολούθησης. Εδώ βλέπετε μια εικόνα από το Gnome System Monitor, που επιτρέπει την αναζήτηση και εμφάνιση διεργασιών, και παρακολούθηση των πόρων του συστήματος:

Εικόνα 4-3. Gnome System Monitor

Για να ανοίξουμε το παράθυρο "System Monitor", επιλέξετε από το μενού Σύστημα ->Διαχείριση συστήματος ->Παρακολούθηση συστήματος.

Επίσης υπάρχουν μερικά εύχρηστα εικονίδια που μπορείτε να εγκαταστήσετε στη μπάρα εργασιών, για τη παρακολούθηση του φόρτου του δικτύου, του δίσκου, της CPU ή της μνήμης. Μια άλλη μικρή εφαρμογή παρακολούθησης συστήματος είναι η xload . Βρείτε αυτή που σας αρέσει!


4.3.5.7. Διακοπή διεργασιών

Ως μη-προνομιούχος χρήστης μπορείτε να επηρεάσετε μόνο τις δικές σας διεργασίες. Έχουμε ήδη δει πως μπορούμε να εμφανίσουμε διεργασίες και να απομονώσουμε τις διεργασίες που ανήκουν σε ένα χρήστη, καθώς και πιθανούς περιορισμούς που προκύπτουν. Όταν βλέπετε ότι κάποια διεργασία σας καταναλώνει πάρα πολλούς πόρους του συστήματος, μπορείτε να κάνετε δύο πράγματα:

  1. Αναγκάστε τη διεργασία να χρησιμοποιήσει λιγότερους πόρους, χωρίς να τη διακόψετε,

  2. Διακόψετε (τερματίστε) τη διεργασία.

Αν θέλετε να επιτρέψετε τη διεργασία να συνεχίσει να εκτελείται, αλλά επίσης θέλετε να βοηθήσετε το σύστημα, μπορείτε να χρησιμοποιήσετε τη renice. Εκτός από τις εντολές nice ή renice, η top παρέχει έναν εύκολο τρόπο να δούμε τη διεργασία που προκαλεί πρόβλημα και να μειώσουμε τη προτεραιότητά της.

Βρείτε την ενοχλητική διεργασία και ελέγξτε την τιμή που υπάρχει στην στήλη "NI", πιθανότατα θα έχει αρνητική τιμή (όχι nice, μεγάλη προτεραιότητα). Εισάγετε r και δώστε το ID της διεργασίας για renice. Μετά εισάγετε την νέα τιμή nice, για παράδειγμα "20" (μέγιστο). Αυτό σημαίνει οτι από εδώ και στο εξής η διεργασία θα καταλαμβάνει το πολύ 1/5 των κύκλων CPU.

Παραδείγματα διεργασιών που μπορεί να θέλετε να συνεχίσουν να είναι οι εξομοιωτές, εικονικές μηχανές, μεταγλωττιστές κλπ.

Αν θέλετε να σταματήσετε μια διεργασία που 'κρέμασε' ή κάνει εντελώς τρελά πράγματα στην Ε/Ε, δημιουργία αρχείων, και χρήση άλλων πόρων του συστήματος, τότε χρησιμοποιείστε την εντολή kill. Αν έχετε την ευκαιρία, πρώτα τερματίστε τη διεργασία 'μαλακά' στείλτε το σήμα SIGTERM. Είναι μια εντολή για να τερματίσει ότι κάνει, σύμφωνα με τις διαδικασίες που προβλέπονται στο ίδιο το πρόγραμμα:

joe:~> ps -ef | grep mozilla
joe    25822    1  0 Mar11 ?    00:34:04 /usr/lib/mozilla-1.4.1/mozilla-

joe:~> kill -15 25822
      

Στο παραπάνω παράδειγμα, ο χρήστης joe σταμάτησε τον περιηγητή Mozilla γιατί 'κρέμασε'.

Μερικές διεργασίες είναι λίγο πιο δύσκολες στο τερματισμό. Αν έχετε χρόνο, μπορείτε να στείλετε το σήμα SIGINT για να τις διακόψετε. Αν ούτε αυτό το κόλπο δουλέψει, τότε χρησιμοποιήστε το ισχυρότερο σήμα, SIGKILL. Στο παρακάτω παράδειγμα, ο χρήστης joe σταματά μια διεργασία Mozilla που έχει 'παγώσει':

joe:~> ps -ef | grep mozilla
joe    25915    1  0 Mar11 ?    00:15:06 /usr/lib/mozilla-1.4.1/mozilla-

joe:~> kill -9 25915

joe:~> ps -ef | grep 25915
joe     2634 32273 0 18:09 pts/4   00:00:00 grep 25915
      

Σε τέτοιες περιπτώσεις, μπορεί να θέλετε να ελέγξετε αν η διεργασία είναι πραγματικά 'νεκρή' μπορείτε να ξανα-εκτελέσετε το φίλτρο grep με το PID της διεργασίας. Αν δεν επιστραφεί τίποτε τότε είστε σίγουροι οτι την τερματίσατε.

Μεταξύ των διεργασιών που είναι δύσκολο να τερματιστούν είναι ο φλοιός. Και αυτό είναι καλό: αν ήταν εύκολο να τερματιστεί, θα χάνατε το φλοιό κάθε φορά που θα πατούσατε Ctrl-C έστω και κατά λάθος, αφού είναι ισοδύναμο με αποστολή SIGINT.

UNIX χωρίς σωληνώσεις είναι σχεδόν αδιανόητο
Η χρήση των σωληνώσεων (|) για το πέρασμα της εξόδου μιας εντολής στην είσοδο μια άλλης εξηγείται στο επόμενο κεφάλαιο, Κεφάλαιο 5.

Σε ένα γραφικό περιβάλλον, το πρόγραμμα xkill είναι πολύ εύχρηστο. Απλά εισάγετε την εντολή, πατάτε Enter και επιλέγετε το παράθυρο της εφαρμογής που θέλετε να τερματίσετε. Είναι μάλλον δραστική αφού στέλνει SIGKILL εξ' ορισμού, γι' αυτό να τη χρησιμοποιείτε μόνο όταν μια εφαρμογή 'κρεμάει'.


4.4. Χρονοπρογραμματισμός διεργασιών

4.4.1. Εκμετάλλευση του αδρανούς χρόνου!

Ένα σύστημα Linux μπορεί να ‘υποφέρει’ από πολλά, αλλά συνήθως ‘υποφέρει’ μόνο κατά τις ώρες που εκτελούνται εφαρμογές γραφείου. Όταν βρισκόμαστε σε ένα γραφειακό περιβάλλον, σε μια αίθουσα διακομιστών η στο σπίτι, τα περισσότερα συστήματα Linux μένουν αδρανή κάποιες ώρες το πρωί, το απόγευμα, τη νύχτα και τα σαββατοκύριακα. Η χρησιμοποίηση αυτού του χρόνου που το σύστημα μένει αδρανές μας κοστίζει λιγότερο από το να αγοράσουμε ένα σύστημα τόσο ισχυρό ώστε να κάνει όλες τις διεργασίες που χρειαζόμαστε ταυτόχρονα.

Υπάρχουν τρείς τρόποι για να εκτελούμε τις διεργασίες με καθυστέρηση:

Οι παραπάνω τρόποι αναλύονται στις παρακάτω ενότητες.


4.4.2. Η εντολή sleep

Η σελίδα με τις πληροφορίες που αφορούν την εντολή sleep είναι ίσως η συντομότερη που υπάρχει. Αυτό που κάνει η εντολή sleep είναι να κάνει το σύστημα περιμένει πριν την εκτέλεση μιας εντολής. Εξ ορισμού ο χρόνος που περιμένει το σύστημα εκφράζεται σε δευτερόλεπτα.

Τότε γιατί υπάρχει; Μερικά πρακτικά παραδείγματα είναι τα εξής:

Όταν κάποιος σε καλεί στο τηλέφωνο, εσύ λες "Ναι θα έρθω σε περίπου μισή ώρα" αλλά είσαι έτοιμος να ‘πνιγείς’ στη δουλεία, πράγμα που γίνεται και ξεχνάς να ξεκινήσεις για τη συνάντηση:

(sleep 1800; echo "Lunch time...») &

Όταν για διάφορους λόγους δεν μπορούμε να χρησιμοποιήσουμε την εντολή at, είναι για παράδειγμα 5 η ώρα και θέλεις να πας σπίτι αλλά έχεις ακόμη πολύ δουλειά να κάνεις και αυτή τη στιγμή κάποιος άλλος χρησιμοποιεί τους πόρους του συστήματος:

(sleep 10000; myprogram) &

Πρέπει πρώτα να σιγουρευτείς ότι υπάρχει στο σύστημα κάποιος τρόπος αυτόματης αποσύνδεσης, και ότι θα αποσυνδεθείς η θα κλειδώσεις την επιφάνεια εργασίας / το γραφείο σου όταν στείλεις αυτή τη διεργασία, η την εκτελέσεις σε μια σύνδεση τερματικού.

Όταν χρειάζεται να εκτυπώσεις μια ακολουθία μεγάλων αρχείων, αλλά θέλεις και άλλοι χρήστες να μπορούν να εκτυπώσουν ενδιάμεσα στα δικά σου αρχεία:

lp lotoftext; sleep 900; lp hugefile; sleep 900; lp anotherlargefile

Η εκτύπωση αρχείων αναλύεται στο Κεφάλαιο 8.

Οι προγραμματιστές συχνά χρησιμοποιούν την εντολή sleep για να ‘παγώσουν’ σενάρια φλοιού ή την εκτέλεση κάποιου προγράμματος για ένα συγκεκριμένο χρονικό διάστημα.


4.4.3. Η εντολή at

Η εντολή at εκτελεί μια εντολή σε προκαθορισμένο χρόνο, χρησιμοποιώντας τον προκαθορισμένο φλοιό εκτός αν ο χρήστης ορίσει αλλιώς (δείτε την σελίδα βοήθειας).

Η σύνταξη της εντολής at η οποία είναι φιλική προς το χρήστη, περιγράφεται στα παρακάτω παραδείγματα:

steven@home:~> at tomorrow + 2 days
warning: commands will be executed using (in order) a) $SHELL
        b) login shell c) /bin/sh
at>  cat reports | mail myboss@mycompany
at> <EOT>
job 1 at 2001-06-16 12:36

Πληκτρολογώντας Ctrl+D φεύγουμε από τη σύνταξη της εντολής at ενώ δημιουργείται ένα μήνυμα "EOT" .

Ο χρήστης steven κάνει κάτι ‘παράξενο’, ενώνει δυο εντολές με σωλήνωση, κάτι τέτοιο μελετούμε στο Κεφάλαιο 5,

steven@home:~> at 0237
warning: commands will be executed using (in order) a) $SHELL
        b) login shell c) /bin/sh
at>  cd new-programs
at>  ./configure; make
at> <EOT>
job 2 at 2001-06-14 02:00

Η επιλογή -m στέλνει ένα mail στο χρήστη όταν η διεργασία ολοκληρωθεί, ή εμφανίζει τους λόγους για τους οποίους η εντολή δεν μπορεί να εκτελεστεί. Η εντολή atq ταξινομεί τις διεργασίες, χρησιμοποιείται κυρίως πριν αποσταλούν οι διεργασίες για να προλάβει την περίπτωση που όλες θα ξεκινήσουν ταυτόχρονα. Με την εντολή atrm ο χρήστης μπορεί να ακυρώσει τις διεργασίες που έχει προηγουμένως προγραμματίσει να εκτελεστούν.

Είναι καλή ιδέα να επιλέγουμε ‘παράξενες’ ώρες για την εκτέλεση των διεργασιών σας γιατί συνήθως οι διεργασίες του συστήματος προγραμματίζονται τις ‘στρογγυλές’ ώρες , όπως μπορείτε να δείτε και στην επόμενη παράγραφο Ενότητα 4.4.4 . Για παράδειγμα, διεργασίες που συχνά εκτελούνται ακριβώς στη μια η ώρα τα ξημερώματα (π.χ. δεικτοδότηση για την ενημέρωση μιας συγκεκριμένης βάσης δεδομένων), επομένως προγραμματίζοντας σε μια ώρα όπως 0100 μπορεί εύκολα να επιβραδύνει το σύστημα σας αντί να το επιταχύνει. Για να αποφύγουμε την εκτέλεση των διεργασιών την ίδια ώρα, μπορούμε να χρησιμοποιήσουμε την εντολή batch, η οποία βάζει σε ουρά τις διεργασίες και τροφοδοτεί με αυτές ανά περιόδους το σύστημα με ένα ισορροπημένο τρόπο, τέτοιο ώστε να αποφεύγεται η υπερβολική κατανάλωση των πόρων του συστήματος. Δείτε τη τεκμηρίωση του συστήματος για περισσότερες πληροφορίες.


4.4.4. Cron και crontab

Το cron (η ονομασία προέκυψε από τη λέξη chronograph) είναι ένα πρόγραμμα, το οποίο επιτρέπει στους χρήστες και τους διαχειριστές ενός συστήματος να χρονοπρογραμματίζουν την εκτέλεση περιοδικών εργασιών. Οι πληροφορίες χρονοπρογραμματισμού συγκεντρώνονται σε αρχεία που ονομάζονται crontabs (η προεπιλεγμένη τοποθεσία του είναι στο /etc) το οποίο καλεί τα επιμέρους προγράμματα (ωριαία, ημερήσια, εβδομαδιαία, μηνιαία).

Το σύστημα cron ελέγχεται από το δαίμονα cron. Συλλέγει πληροφορίες σχετικά με το ποια προγράμματα πρέπει να εκτελεστούν σύμφωνα με τις καταχωρήσεις crontab του συστήματος και των χρηστών. Μόνο ο διαχειριστής του συστήματος έχει πρόσβαση στα crontabs του συστήματος, ενώ ο κάθε άλλος χρήστης έχει πρόσβαση μόνο στα δικά του crontabs. Σε μερικά συστήματα (κάποιοι) χρήστες μπορεί να μην έχουν πρόσβαση στις λειτουργίες του cron.

Κατά την εκκίνηση του συστήματος ο δαίμονας cron αναζητά στη διαδρομή /var/spool/cron/τις καταχωρήσεις crontab που ονομάζονται σύμφωνα με τα ονόματα των λογαριασμών /etc/passwd, αναζητά στη διαδρομή /etc/cron.d/ και στη διαδρομή/etc/crontab έπειτα χρησιμοποιώντας αυτές τις πληροφορίες ελέγχει κάθε λεπτό αν υπάρχει κάποια προγραμματισμένη εργασία που πρέπει να εκτελεστεί. Κατά την εκτέλεση μιας διεργασίας το σύστημα εκτελεί τις κατάλληλες εντολές σαν να ήταν ο ιδιοκτήτης του αρχείου crontab και έπειτα στέλνει την έξοδο των εντολών στο χρήστη.

Ένα δημοφιλές συντακτικό του cron είναι το Vixie cron, το οποίο αναπτύχθηκε από τον Paul Vixie. Σε συστήματα που χρησιμοποιούν Vixie cron, οι εργασίες οι οποίες εκτελούνται ωριαία, ημερήσια, εβδομαδιαία και μηνιαία αποθηκεύονται σε ένα ξεχωριστό φάκελο στη διαδρομή /etc, σε αντίθεση με την συνήθη πρακτική στο UNIX cron, όπου όλες οι εργασίες αποθηκεύονται σε ένα μεγάλο αρχείο.

Παράδειγμα από ένα αρχείο Vixie crontab:

[root@blob /etc]# more crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
# commands to execute every hour
01 * * * * root run-parts /etc/cron.hourly
# commands to execute every day
02 4 * * * root run-parts /etc/cron.daily
# commands to execute every week
22 4 * * 0 root run-parts /etc/cron.weekly
commands to execute every month
42 4 1 * * root run-parts /etc/cron.monthly
      

Μπορείτε επίσης να χρησιμοποιήσετε την εντολή crontab -l για να εμφανίσετε τα crontabs.

Πριν ξεκινήσει ο χρονοπρογραμματισμός πρέπει πρώτα να πάρουν τιμή κάποιες μεταβλητές, σε κάθε γραμμή ορίζεται μια εργασία προς εκτέλεση και κάθε τέτοια γραμμή ξεκινά με 5 πεδία τα οποία αντιπροσωπεύουν την ώρα και τη μέρα εκτέλεσης.. Το πρώτο πεδίο περιέχει τα λεπτά (από 0 έως 59), το δεύτερο προσδιορίζει την ώρα εκτέλεσης (0-23), το τρίτο την μέρα του μήνα (1-31), το επόμενο τον αριθμό του μήνα (1-12), και το τελευταίο τη μέρα της εβδομάδας (0-7, το 0 και το 7 είναι η Κυριακή). Ο αστερίσκος σε καθένα από αυτά τα πεδία συμβολίζει οποιαδήποτε τιμή, σύμφωνα πάντα με το εύρος τιμών του πεδίου. Η εισαγωγή λίστας στοιχείων σε κάποιο πεδίο είναι επιτρεπτή, για παράδειγμα για να εκτελέσουμε μια εργασία από τη Δευτέρα ως την Παρασκευή εισάγουμε στο τελευταίο πεδίο 1-5, για να εκτελέσουμε μια εργασία τη Δευτέρα, Τετάρτη και Παρασκευή εισάγουμε 1,3,5.

Μετά από αυτά γράφουμε στην τελευταία στήλη το όνομα του χρήστη για τον οποίο πρέπει να εκτελεστεί η προγραμματισμένη εργασία. Το παραπάνω παράδειγμα είναι από ένα Vixie cron στο οποίο ο διαχειριστής εκτελεί το πρόγραμμα run-parts σε κανονικά διαστήματα, έχοντας ως όρισμα και τις κατάλληλες διαδρομές αρχείων. Στους καταλόγους αυτούς, οι εργασίες που πρέπει να εκτελεστούν σε προγραμματισμένο χρόνο είναι αποθηκευμένες σαν σενάρια φλοιού, όπως για παράδειγμα το σενάριο αυτό εκτελείται ημερήσια και ανανεώνει την βάση δεδομένων χρησιμοποιώντας την εντολή locate:

billy@ahost cron.daily]$ cat slocate.cron
#!/bin/sh
renice +19 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "nfs,smbfs,ncpfs,proc,devpts" -e \
"/tmp,/var/tmp, /usr/tmp,/afs,/net"
      

Οι χρήστες πρέπει να επεξεργάζονται τα crontabs με ασφαλή τρόπο χρησιμοποιώντας την εντολή crontab -e. Αυτό θα αποτρέψει ένα χρήστη να ανοίξει κατά λάθος παραπάνω από ένα αντίγραφο του ίδιου αρχείου crontab . Ο προεπιλεγμένος επεξεργαστής κειμένου που χρησιμοποιείτε είναι ο vi (Βλέπε Κεφάλαιο 6, αλλά μπορεί να χρησιμοποιηθεί οποιοσδήποτε επεξεργαστής κειμένου, όπως ο ed ή ο nano.

Κατά την έξοδο από το σύστημα θα ειδοποιηθείτε ότι έχει ενεργοποιηθεί ένα καινούργιο crontab.

Αυτή η καταχώρηση crontab υπενθυμίζει στον χρήστη billy να πάει στο αθλητικό κέντρο κάθε Πέμπτη βράδυ::

billy:~> crontab -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.20264 installed on Sun Jul 20 22:35:14 2003)
# (Cron version -- $Id: chap4.xml,v 1.27 2006/10/26 15:37:52 tille Exp $)
38 16 * * 3 mail -s "sports evening" billy
      

Ύστερα από την προσθήκη μιας νέας προγραμματισμένης εργασίας, το σύστημα θα επιβεβαιώσει την εγκατάσταση του καινούργιου crontab. Για να ισχύουν οι αλλαγές που κάνατε θα πρέπει να επανεκκινήσετε τον δαίμονα cron. Στο παράδειγμα, ο χρήστης billy προσθέτει μια νέα γραμμή αναφέρεται σε ένα σενάριο με το όνομα backup:

billy:~> crontab -e
45 15 * * 3 mail -s "sports evening" billy
4 4 * * 4,7 /home/billy/bin/backup.sh

<--write and quit-->

crontab: installing new crontab

billy:~>
      

Το σενάριο backup.sh εκτελείται κάθε Πέμπτη και Κυριακή. Στην Ενότητα 7.2.5 υπάρχουν πληροφορίες για τα σενάρια φλοιού. Υπενθυμίζεται ότι η έξοδος των εντολών, αν υπάρχει, στέλνεται στο χρήστη στο οποίο ανήκει το crontab. Αν δεν έχει διαμορφωθεί κάποια υπηρεσία ταχυδρομείου, θα βρείτε την έξοδο των εντολών σε ένα αρχείο κειμένου στη διαδρομή /var/spool/mail/<your_username>.

Ποιός εκτελεί τις εντολές μου;
Δεν χρειάζεται να προσδιοριστεί ποιος χρήστης εκτελεί της εντολές. Εκτελούνται εξ ορισμού σύμφωνα με τα δικαιώματα του χρήστη στον οποίο ανήκουν.


4.5. Περίληψη

Το Linux είναι ένα πολύ-χρηστικό και πολύ-εργασιακό λειτουργικό σύστημα το οποίο χειρίζεται τις διεργασίες με τρόπο ίδιο με αυτό του UNIX. Η ταχύτητα εκτέλεσης των εντολών εξαρτάται από χιλιάδες πράματα. Ανάμεσα στα άλλα, μάθαμε αρκετές νέες εντολές για να χειριζόμαστε διεργασίες. Να μία λίστα:

Πίνακας 4-3. Νέες εντολές στο κεφάλαιο 4: Διεργασίες

Εντολή

Σημασία

at

Δημιουργεί μια ουρά από εργασίες που πρόκειται να εκτελεστούν.

atq

Εμφανίζει μια λίστα με τις εργασίες του χρήστη που βρίσκονται σε αναμονή.

atrm

Διαγράφει εργασίες, προσδιοριζόμενες από τον αριθμό τους.

batch

Εκτελεί εντολές όταν το επιτρέπει ο φόρτος του συστήματος.

crontab

Δημιουργεί αρχεία crontab διάφορους χρήστες.

halt

Σταματά την λειτουργία του συστήματος.

init run level

Αρχικοποίηση συστήματος και ελέγχου διεργασιών.

jobs

Εμφανίζει τις εργασίες που εκτελούνται.

kill

Τερματίζει μια διεργασία.

mesg

Έλεγχος του δικαιώματος εγγραφής στο τερματικό σας.

netstat

Εμφανίζει τις συνδέσεις δικτύου, τους δρομολογητές, στατιστικά διεπαφών, κεκαλυμμένες συνδέσεις και συμμετοχές σε πολυεκπομπές.

nice

Εκτελεί ένα πρόγραμμα με τροποποιημένη προτεραιότητα.

pgrep

Εμφανίζει τις διεργασίες που εκτελούνται.

ps

Αναφέρει την κατάσταση των διεργασιών.

pstree

Εμφανίζει τις διεργασίες σε μορφή δενδρογράμματος.

reboot

Σταματά την λειτουργία του συστήματος (επανεκκίνηση).

renice

Αλλάζει την προτεραιότητα των εκτελούμενων διεργασιών.

shutdown

Τερματίζει τη λειτουργία του συστήματος.

sleep

Δημιουργεί μια καθυστέρηση (περίοδο αδράνειας) συγκεκριμένου χρόνου.

time

Χρονομετρά μια εντολή ή εμφανίζει πληροφορίες για τη χρήση πόρων του συστήματος.

top

Εμφανίζει ποιες εργασίες χρησιμοποιούν μεγαλύτερο ποσοστό της CPU.

uptime

Εμφανίζει πόση ώρα είναι το σύστημα σε λειτουργία.

vmstat

Εμφανίζει στατιστικά στοιχεία για την εικονική μνήμη.

w

Δείχνει ποιοι χρήστες είναι συνδεμένοι στο σύστημα και τι διεργασίες εκτελούν.

wall

Στέλνει ένα μήνυμα σε όλα τα τερματικά.

who

Δείχνει ποιοι χρήστες είναι συνδεδεμένοι στο σύστημα.

write

Στέλνει ένα μήνυμα σε ένα συγκεκριμένο χρήστη.


4.6 Ασκήσεις

Αυτές είναι μερικές ασκήσεις οι οποίες θα βοηθήσουν στην εξοικείωση με τις διεργασίες που εκτελούνται στο σύστημα σας.

 

4.6.1. Γενικά


4.6.2. Εκκίνηση, init κλπ.


4.6.3. Χρονοπρογραμματισμός


Κεφάλαιο 5. Ανακατεύθυνση Ε/Ε

Αυτό το κεφάλαιο περιγράφει έναν ισχυρό μηχανισμό του UNIX, την ανακατεύθυνση εισόδου, εξόδου και λαθών. Τα θέματα περιλαμβάνουν:


5.1. Απλή ανακατεύθυνση

5.1.1. Τι είναι πρότυπη είσοδος και έξοδος;

Οι περισσότερες εντολές Linux διαβάζουν από μια είσοδο, από ένα αρχείο ή άλλες παραμέτρους γραμμής, και γράφουν σε μια έξοδο. Εξ' ορισμού η είσοδος προέρχεται από το πληκτρολόγιο, και η έξοδος κατευθύνεται στην οθόνη. Το πληκτρολόγιο είναι η συσκευή πρότυπης εισόδου (standard input -stdin) και η οθόνη ή το τερματικό η συσκευή πρότυπης εξόδου (standard output -stdout).

Όμως, επειδή το Linux είναι πολύ ευέλικτο, οι προεπιλεγμένες συσκευές μπορούν να τροποποιηθούν. Για παράδειγμα, η πρότυπη έξοδος ενός διακομιστή που παρακολουθείται συστηματικά, μπορεί να είναι ένας εκτυπωτής.


5.1.2. Οι τελεστές ανακατεύθυνσης

5.1.2.1. Ανακατεύθυνση εξόδου με > και |

Μερικές φορές θέλετε να αποθηκεύσετε το αποτέλεσμα μιας εντολής σε ένα αρχείο, ή μπορεί να θέλετε να χρησιμοποιήσετε την έξοδο μιας εντολής ως είσοδο σε μια άλλη εντολή. Αυτό είναι γνωστό ως ανακατεύθυνση εξόδου. Η ανακατεύθυνση γίνεται είτε με τους τελεστές ">" (μεγαλύτερο), ή "|" (σωλήνωση).

Όπως είδαμε σε προηγούμενη ενότητα, η εντολή cat μπορεί να χρησιμοποιηθεί για την εμφάνιση των περιεχομένων αρχείων στην οθόνη. Αν ανακατευθύνουμε αυτή την έξοδο σε ένα όνομα αρχείου, αυτό το αρχείο αν δεν υπάρχει δημιουργείται ή αν υπάρχει υπέρ-γράφεται (τροποποιείται), γι' αυτό προσέχετε.

nancy:~> cat test1
some words

nancy:~> cat test2
some other words

nancy:~> cat test1 test2 > test3

nancy:~> cat test3
some words
some other words
      

Μην υπερ-γράφετε (τροποποιείτε)!
Προσέχετε όταν υπερ-γράφετε (τροποποιείτε) υπάρχοντα (σημαντικά) αρχεία με την ανακατεύθυνση εξόδου. Πολλοί φλοιοί, και το Bash, έχουν ένα ενσωματωμένο χαρακτηριστικό που προστατεύει από αυτό το κίνδυνο: την επιλογή: noclobber. Περισσότερες πληροφορίες στη τεκμηρίωση του συστήματος. Στο Bash, μπορείτε να προσθέσετε την εντολή set -o noclobber στη διαμόρφωση του .bashrc σας για να αποτρέψετε τυχαία τροποποίηση των αρχείων.

Η ανακατεύθυνση του "τίποτε" σε ένα υπάρχον αρχείο ισούται με το άδειασμα του αρχείου:

nancy:~> ls -l list
-rw-rw-r--    1 nancy   nancy     117 Apr  2 18:09 list

nancy:~> > list

nancy:~> ls -l list
-rw-rw-r--    1 nancy   nancy       0 Apr  4 12:01 list
      

Αυτή η διαδικασία λέγεται αποκοπή (truncating).

Η ίδια ανακατεύθυνση σε ένα ανύπαρκτο αρχείο δημιουργεί ένα νέο άδειο αρχείο με το όνομα που ορίζουμε:

nancy:~> ls -l newlist
ls: newlist: No such file or directory

nancy:~> > newlist

nancy:~> ls -l newlist
-rw-rw-r--  1 nancy   nancy         0 Apr  4 12:05 newlist
      

Το Κεφάλαιο 7 δίνει περισσότερα παραδείγματα γι' αυτό το τύπο ανακατεύθυνσης.

Όπως αναφέρθηκε και παραπάνω, χρησιμοποιώντας μια διοχέτευση μπορούμε να τροφοδοτήσουμε την έξοδο μιας εντολής ως είσοδο μιας άλλης. Ακολουθούν κάποια παραδείγματα:

Εντοπισμός γραμμών σε ένα αρχείο οι οποίες ταιριάζουν με τα κριτήρια που ορίζονται στο "pattern1" εκτός από αυτές που ταιριάζουν και με το "pattern2" (η επιλογή -v σημαίνει ουσιαστικά “να μην ταιριάζει”):

grep pattern1 file | grep -v pattern2

Εμφάνιση περιεχομένων καταλόγου, σελίδα-σελίδα (πολύ χρήσιμη για καταλόγους που περιέχουν πολλά στοιχεία):

ls -la | less

Εύρεση αρχείου σε ένα κατάλογο:

ls -l | grep part_of_file_name


5.1.2.2. Ανακατεύθυνση εισόδου

Σε μια άλλη περίπτωση, μπορεί ένα αρχείο να χρησιμοποιηθεί ως είσοδος σε μια εντολή που κανονικά δεν δέχεται αρχεία ως είσοδο. Αυτή η ανακατεύθυνση επιτυγχάνεται με τον τελεστή "<" (μικρότερο).

Παρακάτω ένα παράδειγμα αποστολής αρχείου σε κάποιον, με ανακατεύθυνση.

andy:~> mail mike@somewhere.org < to_do
      

Αν ο χρήστης mike υπάρχει στο σύστημα, δεν χρειάζεται να εισάγετε τη πλήρη διεύθυνση. Αν θέλετε να επικοινωνήσετε με κάποιον στο Διαδίκτυο, εισάγετε τη πλήρη διεύθυνση ως όρισμα στο mail.

Αυτό φαίνεται λίγο πιο δύσκολο από το απλούστερο cat file | mail someone, αλλά σίγουρα είναι μια πιο κομψή χρήση των διαθέσιμων εργαλείων.


5.1.2.3. Συνδυασμός ανακατευθύνσεων

Το ακόλουθο παράδειγμα συνδυάζει ανακατεύθυνση είσοδο και έξοδο. Το αρχείο text.txt πρώτα ελέγχεται για ορθογραφικά λάθη, και η έξοδος ανακατευθύνεται σε ένα αρχείο καταγραφής λαθών:

spell < text.txt > error.log

Ο συνδυασμός εντολών που ακολουθεί εμφανίζει όλες τις γραμμές που αφορούν την εξέταση ενός αρχείου από το αρχείο βοήθειας της εντολής less:

mike:~> less --help | grep -i examine
  :e [file]      Examine a new file.
  :n          *  Examine the (N-th) next file from the command line.
  :p          *  Examine the (N-th) previous file from the command line.
  :x          *  Examine the first (or N-th) file from the command line.
      

Η επιλογή -i χρησιμοποιείται για αναζητήσεις αδιάφορες για πεζά ή κεφαλαία γράμματα (case-insensitive) – θυμηθείτε οτι τα συστήματα UNIX είναι ιδιαίτερα ευαίσθητα στις διαφορές κεφαλαίων – πεζών.

Αν θέλετε να αποθηκεύσετε την έξοδο αυτής της εντολής για μελλοντική αναφορά, ανακατευθύνετε την έξοδο σε ένα αρχείο:

mike:~> less --help | grep -i examine > examine-files-in-less

mike:~> cat examine-files-in-less
  :e [file]      Examine a new file.
  :n          *  Examine the (N-th) next file from the command line.
  :p          *  Examine the (N-th) previous file from the command line.
  :x          *  Examine the first (or N-th) file from the command line.
      

Γενικά, δεν υπάρχουν περιορισμοί στις διοχετεύσεις και οι ανακατευθύνσεις εισόδου – εξόδου είναι πάντα εφικτές εφόσον οι αντίστοιχες εντολές παίρνουν είσοδο και δίνουν έξοδο.


5.1.2.4. Ο τελεστής >>

Αντί για την τροποποίηση (υπερ-γραφή) των δεδομένων σε ένα αρχείο, μπορούμε επίσης να προσαρτήσουμε κείμενο στο τέλος υπάρχοντος αρχείου με τη χρήση δύο διαδοχικών τελετών 'μεγαλύτερο' :

Παράδειγμα:

mike:~> cat wishlist
more money
less work

mike:~> date >> wishlist

mike:~> cat wishlist
more money
less work
Thu Feb 28 20:23:07 CET 2002
      

Η εντολή date κανονικά εμφανίζει την ημερομηνία στην οθόνη, αλλά τώρα προσαρτάται στο αρχείο wishlist.


5.2. Προχωρημένα θέματα ανακατεύθυνσης

5.2.1. Χρήση περιγραφέων αρχείων

Υπάρχουν τρεις τύποι Ε/Ε, που έχουν τον δικό τους αριθμό, που ονομάζονται περιγραφείς αρχείων:

Στις ακόλουθες περιγραφές, αν ο αριθμός παραλείπεται, και ο πρώτος τελεστής ανακατεύθυνσης είναι <, η ανακατεύθυνση αναφέρεται στη πρότυπη είσοδο (περιγραφέας αρχείου 0). Αν ο πρώτος τελεστής ανακατεύθυνσης είναι >, η ανακατεύθυνση αναφέρεται στη πρότυπη έξοδο (περιγραφέας αρχείου 1).

Μερικά πρακτικά παραδείγματα θα ξεκαθαρίσουν τα πράγματα: η εντολή

ls > dirlist 2>&1

θα κατευθύνει τη πρότυπη έξοδο και το πρότυπο λάθος στο αρχείο dirlist, ενώ η εντολή

ls 2>&1 > dirlist

θα κατευθύνει μόνο τη πρότυπη έξοδο στο dirlist. Αυτό μπορεί να είναι χρήσιμο για τους προγραμματιστές.

Εδώ τα πράγματα γίνονται αρκετά περίπλοκα, ας μην μπλέκουμε τη χρήση του & εδώ με τη χρήση στην Ενότητα 4.1.2.1, όπου ο ίδιος χαρακτήρας χρησιμοποιείται για την εκτέλεση διεργασίας στο παρασκήνιο. Εδώ, απλά είναι μια ένδειξη οτι ο αριθμός που ακολουθεί δεν είναι όνομα αρχείου, αλλά τοποθεσία που δείχνει η ροή δεδομένων. Επίσης σημειώστε οτι το σύμβολο > δεν πρέπει να διαχωριστεί με κενό από τον αριθμό του περιγραφέα αρχείου. Αν διαχωριστούν, θα στείλουμε την έξοδο πάλι σε αρχείο. Το παρακάτω παράδειγμα επιδεικνύει αυτό:

[nancy@asus /var/tmp]$ ls 2> tmp

[nancy@asus /var/tmp]$ ls -l tmp
-rw-rw-r--  1 nancy nancy 0 Sept  7 12:58 tmp

[nancy@asus /var/tmp]$ ls 2 > tmp
ls: 2: No such file or directory
      

Η πρώτη εντολή που εκτελεί η nancy είναι σωστή (αν και δεν παράγονται σφάλματα και έτσι το αρχείο που ανακατευθύνεται το πρότυπο σφάλμα είναι άδειο). Η δεύτερη εντολή αναμένει οτι το 2 είναι όνομα αρχείου, που δεν υπάρχει στη περίπτωσή μας, έτσι εμφανίζεται σφάλμα.

Όλα αυτά τα χαρακτηριστικά εξηγούνται με λεπτομέρεια στις σελίδες πληροφόρησης του φλοιού Bash.


5.2.2. Παραδείγματα

5.2.2.1. Ανάλυση σφαλμάτων

Αν η διεργασία σας παράγει πολλά σφάλματα, εδώ είναι ένας τρόπος να τα εξετάσουμε με λεπτομέρεια:

command 2>&1 | less

Αυτό χρησιμοποιείται συνήθως όταν δημιουργούμε νέο λογισμικό με την εντολή make όπως παρακάτω:

andy:~/newsoft> make all 2>&1 | less
--output ommitted--
      

5.2.2.2. Διαχωρισμός πρότυπης εξόδου από το πρότυπο σφάλμα

Δομές σαν αυτές χρησιμοποιούνται συχνά από προγραμματιστές, ώστε η έξοδος να εμφανίζεται στην οθόνη, και τα σφάλματα σε άλλη οθόνη. Πρώτα βρίσκουμε ποιο τερματικό χρησιμοποιούμε με την εντολή tty:

andy:~/newsoft> make all 2> /dev/pts/7
      

5.2.2.3. Εγγραφή στην έξοδο και σε αρχεία ταυτόχρονα

Μπορείτε να χρησιμοποιήσετε την εντολή tee για να αντιγράψετε είσοδο στη πρότυπη έξοδο και σε ένα ή περισσότερα αρχεία εξόδου με μία κίνηση. Με τη χρήση της επιλογής -a το tee προσαρτά δεδομένα σε αρχείο(α). Αυτή η εντολή είναι χρήσιμη αν θέλετε να δείτε και να αποθηκεύσετε την έξοδο. Οι τελεστές > και >> δεν επιτρέπουν τη ταυτόχρονη εκτέλεση των δύο εργασιών.

Το εργαλείο αυτό συνήθως καλείται μέσω σωλήνωσης (|), όπως φαίνεται στο παρακάτω παράδειγμα:

mireille ~/test> date | tee file1 file2
Thu Jun 10 11:10:34 CEST 2004

mireille ~/test> cat file1
Thu Jun 10 11:10:34 CEST 2004

mireille ~/test> cat file2
Thu Jun 10 11:10:34 CEST 2004

mireille ~/test> uptime | tee -a file2
 11:10:51 up 21 days, 21:21, 57 users,  load average: 0.04, 0.16, 0.26

mireille ~/test> cat file2
Thu Jun 10 11:10:34 CEST 2004
 11:10:51 up 21 days, 21:21, 57 users,  load average: 0.04, 0.16, 0.26
      

5.3. Φίλτρα

Όταν ένα πρόγραμμα εκτελεί λειτουργίες στην είσοδο και γράφει το αποτέλεσμα στη πρότυπη έξοδο, αυτό λέγεται φίλτρο. Μια από τις πιο κοινές χρήσεις των φίλτρων είναι η αναδόμηση της εξόδου. Παρακάτω θα συζητήσουμε μερικά από τα πιο σημαντικά φίλτρα.


5.3.1. Περισσότερα για τη grep

Όπως είδαμε στην Ενότητα 3.3.3.4, η εντολή grep σαρώνει την έξοδο γραμμή προς γραμμή, αναζητώντας ταυτίσεις προτύπων. Όλες οι γραμμές που περιέχουν το πρότυπο θα εγγραφούν στη πρότυπη έξοδο. Αυτή η συμπεριφορά μπορεί να αναστραφεί με την επιλογή -v.

Μερικά παραδείγματα: υποθέστε ότι θέλουμε να ξέρουμε ποια αρχεία σε συγκεκριμένο κατάλογο έχουν τροποποιηθεί τον Φεβρουάριο:

jenny:~> ls -la | grep Feb
      

Η εντολή grep, όπως οι περισσότερες εντολές, είναι ευαίσθητη στα πεζά – κεφαλαία γράμματα. Με την επιλογή -i ακυρώνουμε αυτή την ευαισθησία. Επίσης υπάρχουν διαθέσιμες πολλές επεκτάσεις GNU, όπως η --colour, που είναι χρήσιμη για το φωτισμό των προτύπων σε μακριές γραμμές, και η --after-context, που εμφανίζει τον αριθμό των γραμμών που εμφανίζουν ταύτιση. Μπορείτε να εκτελέσετε και μια αναδρομική grep που αναζητά σε υποκαταλόγους με την επιλογή -r. Ως συνήθως, οι επιλογές μπορούν να συνδυαστούν.

Οι κανονικές εκφράσεις μπορούν να χρησιμοποιηθούν για να εκτελέσετε λεπτομερέστερες αναζητήσεις σε αρχεία. Ο καλύτερος τρόπος να ξεκινήσετε είναι να διαβάσετε τη τεκμηρίωσης της grep. Μια εξαίρετη εισαγωγή βρίσκεται στις σελίδες Info για τη grep. Επειδή η συζήτηση για τις κανονικές εκφράσεις είναι πολύ μεγάλη και ενδιαφέρουσα, σας συνιστούμε να ξεκινήσετε από αυτά τα σημεία.

Ασχοληθείτε λίγο παραπάνω με τη grep, αξίζει τον κόπο να μάθετε να χρησιμοποιείτε αυτή την πανίσχυρη εντολή φίλτρων. Οι ασκήσεις στο τέλος του κεφαλαίου σας βοηθούν να ξεκινήσετε, Ενότητα 5.5.


5.3.2. Φίλτρα εξόδου

Η εντολή sort εξ' ορισμού ταξινομεί γραμμές αλφαβητικά:

thomas:~> cat people-I-like | sort
Auntie Emmy
Boyfriend
Dad
Grandma
Mum
My boss
      

Αλλά υπάρχουν και πολλά άλλα που μπορεί να κάνει η sort. Έλεγχο μεγέθους αρχείων, ας πούμε. Με αυτή την εντολή, τα περιεχόμενα ενός καταλόγου ταξινομούνται κατά μέγεθος αρχείου:

ls -la | sort -nk 5

Παλιά σύνταξη της sort
Μπορείτε να πάρετε το ίδιο αποτέλεσμα με την εντολή ls -la | sort +4n, αλλά αυτή η παλαιού τύπου σύνταξη δεν συμφωνεί με τα τρέχοντα πρότυπα.

Η εντολή sort μπορεί επίσης να χρησιμοποιηθεί σε συνδυασμό με το πρόγραμμα uniqsort -u) που ταξινομεί και αφαιρεί τις διπλές γραμμές:

thomas:~> cat itemlist
1
4
2
5
34
567
432
567
34
555

thomas:~> sort itemlist | uniq
1
2
34
4
432
5
555
567
      

5.4. Περίληψη

Σε αυτό το κεφάλαιο μάθαμε πως μπορούμε να συνδυάσουμε εντολές μεταξύ τους, και πως η έξοδος μιας εντολής μπορεί να χρησιμοποιηθεί ως είσοδος σε άλλη εντολή. Η ανακατεύθυνση Ε/Ε είναι κοινός τόπος στα συστήματα UNIX και Linux. Αυτός ο ισχυρός μηχανισμός επιτρέπει την ευέλικτη σύνθεση επιμέρους εντολών του UNIX. Οι πιο συνηθισμένοι τελεστές ανακατεύθυνσης είναι οι > και |. Στο Παράρτημα C θα βρείτε μια σύνοψη των εντολών ανακατεύθυνσης και άλλων δομών φλοιού.

Πίνακςας 5-1. Νέες εντολές στο κεφάλαιο 5: ανακατεύθυνση Ε/Ε

Εντολή

Σημασία

date

Εμφάνιση ημερομηνίας και ώρας.

set

Διαμόρφωση επιλογών φλοιού.

sort

Ταξινόμηση γραμμών κειμένου.

uniq

Αφαίρεση διπλών γραμμών από ταξινομημένο αρχείο.


5.5. Ασκήσεις

Οι ασκήσεις που ακολουθούν δίνουν περισσότερα παραδείγματα συνδυασμού εντολών. Ο κύριος στόχος είναι να προσπαθήσουμε να χρησιμοποιήσουμε το πλήκτρο Enter όσο λιγότερο γίνεται. Όλες οι ασκήσεις εκτελούνται με δικαιώματα απλού χρήστη, ώστε να δημιουργούν μερικά σφάλματα. Όταν συμβούν, μην ξεχάστε τα διαβάστε τις σελίδες τεκμηρίωσης!


Κεφάλαιο 6. Συντάκτες κειμένου

Σε αυτό το κεφάλαιο, θα συζητήσουμε την ορθή χρήση ενός διορθωτή κειμένου. Θα εστιάσουμε κυρίως στον βελτιωμένο συντάκτη vi(m).
Αφού τελειώσετε αυτό το κεφάλαιο, θα μπορείτε να εκτελείτε τις παρακάτω λειτουργίες:

6.1. Συντάκτες κειμένου

6.1.1. Γιατί να χρησιμοποιήσω συντάκτη;

Είναι πολύ σημαντικό να γνωρίζετε καλά τη χρήση ενός συντάκτη κειμένου. Η γνώση ενός συντάκτη είναι το πρώτο βήμα σας για να ελέγξετε το σύστημα.

Ο συντάκτης κειμένου θα σας φανεί χρήσιμος στην τροποποίηση αρχείων που επηρεάζουν το περιβάλλον σας. Ως προχωρημένος χρήστης, μπορεί να αρχίσετε να γράφετε σενάρια, ή βιβλία ή να αναπτύσσετε προγράμματα. Η χρήση ενός συντάκτη θα ενισχύσει πολύ τη παραγωγικότητά σας.


6.1.2. Ποιο συντάκτη να χρησιμοποιήσω;

Θα εστιάσουμε στους συντάκτες κειμένου, που μπορούν να χρησιμοποιηθούν χωρίς γραφικό περιβάλλον, σε απλό παράθυρο τερματικού. Ένα πρόσθετο πλεονέκτημα χρήσης συντάκτη κειμένου είναι οτι μπορεί να χρησιμοποιηθεί σε απομακρυσμένες συνδέσεις. Η ταχύτητα απόκρισης είναι πολύ μεγαλύτερη, αφού δεν απαιτείται η μεταφορά της γραφικής διεπαφής μέσω του δικτύου.

Υπάρχουν, όπως συνήθως, πολλοί τρόποι να λύσουμε το πρόβλημα. Ας δούμε ποιοι συντάκτες είναι γενικά διαθέσιμοι:


6.1.2.1. Ed

Ο συντάκτης ed είναι συντάκτης γραμμής που μπορεί να χρησιμοποιηθεί για επεξεργασία μικρών αρχείων κειμένου.

Ο ed είναι ο αρχικός συντάκτης κειμένου των συστημάτων UNIX, και ευρύτατα διαθέσιμος. Όμως, για τις περισσότερες εργασίες, έχει αντικατασταθεί από συντάκτες πλήρους οθόνης, όπως οι emacs και vi, δείτε παρακάτω.


6.1.2.2. GNU Emacs

Ο Emacs είναι επεκτάσιμος, διαμορφώσιμος, αυτο-τεκμηριωνόμενος, πραγματικού χρόνου συντάκτης, γνωστός σε πολλά συστήματα UNIX, και άλλα. Το κείμενο που συντάσσεται είναι ορατό στην οθόνη και ενημερώνεται αυτόματα όπως πληκτρολογείτε τις εντολές. Είναι συντάκτης πραγματικού χρόνου γιατί η οθόνη ενημερώνεται πολύ συχνά, συνήθως μετά τη πληκτρολόγηση ενός ή δύο χαρακτήρων. Ο Emacs θεωρείται ιδιαίτερα προχωρημένος γιατί δίνει πολλές δυνατότητες πέρα από τις απλές ενός συντάκτη: έλεγχος διεργασιών, αυτόματη παραγραφοποίηση προγραμμάτων, ταυτόχρονη θέαση δύο ή περισσότερων αρχείων, σύνταξη μορφοποιημένου κειμένου, διαχείριση κειμένου σε χαρακτήρες, λέξεις, γραμμές, προτάσεις, παραγράφους, σελίδες, κανονικές εκφράσεις και σχόλια σε διάφορες γλώσσες προγραμματισμού.

Αυτο-τεκμηριωνόμενος (Self-documenting) σημαίνει οτι κάθε στιγμή μπορείτε να εισάγετε έναν ειδικό χαρακτήρα, Ctrl+H, για να μάθετε ποιες είναι οι επιλογές σας. Μπορείτε επίσης να το μάθετε τι κάνει κάθε εντολή, ή όλες τις εντολές σχετικές με ένα θέμα. Δαμορφώσιμος (Customizable) σημαίνει οτι μπορείτε να τροποποιήσετε λίγο τους ορισμούς των εντολών του Emacs. Για παράδειγμα αν θέλετε τα σχόλια στα προγράμματά σας να αρχίζουν με "<**" και να τελειώνουν με "**>", μπορείτε να ενημερώσετε τις εντολές διαχείρισης σχολίων του Emacs γι' αυτό. Ένα άλλο παράδειγμα είναι η θέση των πλήκτρων κίνησης ή άλλων πλήκτρων συντόμευσης στο πληκτρολόγιο: μπορείτε να τα μεταβάλετε όπως θέλετε.

Επεκτάσιμος (Extensible) σημαίνει οτι μπορείτε να προχωρήσετε πέρα από την απλή διαμόρφωση και να γράψετε εντελώς νέες εντολές, γράφοντας προγράμματα στη γλώσσα Lisp τα οποία εκτελούνται από το διερμηνέα Lisp του Emacs. O Emacs είναι online επεκτάσιμος, με την έννοια οτι τμήματά του μπορούν να προσθαφαιρεθούν χωρίς την επανεκκίνηση όλου του συντάκτη. Εντολές γραμμένες σε Lisp από άλλους χρήστες μπορούν να ενσωματωθούν στο δικό μας Emacs.

Στο σύστημα X Window (ξεκινά ως xemacs) ο Emacs παρέχει menus και βολικές συνδέσεις με το ποντίκι. Αλλά ο Emacs μπορεί να προσφέρει πολλά από τα πλεονεκτήματα των παραθυρικών συστημάτων σε απλό τερματικό κειμένου.


6.1.2.3. Vi(m)

Το Vim σημαίνει "Vi Improved" (Βελτιωμένος Vi). Παλιότερα σήμαινε "Vi Imitation" (Απομίμηση Vi),αλλά υπάρχουν τόσες πολλές βελτιώσεις που η αλλαγή ονόματος κρίθηκε απαραίτητη. Ο Vim είναι ένας συντάκτης κειμένου που περιλαμβλανει σχεδόν όλες τις εντολές του προγράμματος UNIX vi αλλά και πολλές νέες.

Οι εντολές στον συντάκτη vi εισάγονται μόνο από το πληκτρολόγιο έτσι ώστε δεν χρειάζεται με μεταφέρουμε τη προσοχή μας στα menu ή στο ποντίκι. Αν θέλετε όμως μπορείτε να ενεργοποιήσετε μια γραφική διεπαφή με menu και ράβδους κύλισης.

Θα αναφερόμαστε στο vi ή στο vim σε όλο το βιβλίο όταν συζητούμε για διόρθωση κειμένων, εσείς φυσικά μπορείτε να χρησιμοποιήσετε όποιον συντάκτη θέλετε. Όμως, συνιστούμε να μάθετε τουλάχιστο τα βασικά του vi γιατί είναι ο προεπιλεγμένος συντάκτης στα περισσότερα συστήματα UNIX, ενώ ο emacs είναι συνήθης επιλογή. Μπορεί να υπάρχουν μικροδιαφορές σε υπολογιστές και τερματικά, αλλά το σημαντικό είναι οτι αν γνωρίζετε τα βασικά του vi, θα επιβιώσετε σε ένα σύστημα UNIX.

Εκτός από την εντολή vim, μπορεί να βρείτε και το gvim, την έκδοση Gnome του vim. Οι αρχάριοι μπορεί να το βρουν χρήσιμο, γιατί τα μενού βοηθούν σε περίπτωση που ξεχάσετε τη χρήση των βασικών εντολών του vim.


6.2. Χρήση του συντάκτη Vim

6.2.1. Δύο καταστάσεις

Ο συντάκτης vi είναι πολύ ισχυρό εργαλείο και έχει ενσωματωμένο ένα πολύ εκτεταμένο εγχειρίδιο, που μπορείτε να το χρησιμοποιήσετε με την εντολή :help μετά την εκκίνηση του προγράμματος (αντί για τα man και info, που δεν περιέχουν τόση πολλή πληροφορία). Θα συζητήσουμε μόνο τα βασικά που σας επιτρέπουν να ξεκινήσετε.

Αυτό που μπερδεύει τον αρχάριο χρήστη με το vi είναι οτι λειτουργεί εε δύο καταστάσεις: κατάσταση εντολών και κατάσταση κειμένου. Ο συντάκτης ξεκινά πάντα στη κατάσταση εντολών. Οι εντολές σας κινούν μέσα στο κείμενο, αναζητούν, αντικαθιστούν, σημειώνουν μπλοκ κειμένου, γενικά κάνει άλλες λειτουργίες σύνταξης, και .φυσικά μεταφέρεται σε κατάσταση κειμένου.

Αυτό σημαίνει οτι κάθε πλήκτρο έχει όχι μια, αλλά πιθανά δύο λειτουργίες: μπορεί να αντιστοιχεί είτε σε εντολή προς το συντάκτη, είτε να είναι χαρακτήρας που εισάγουμε στο κείμενο.

Note

Προφορά

 

Λέγονται “βι-άι” και “βιμ”


6.2.2. Βασικές εντολές

6.2.2.1. Κίνηση μέσα στο κείμενο

Η κίνηση μέσα στο κείμενο συνήθως γίνεται με τα βέλη του πληκττρολογίου. Αν όχι, προσπαθήστε:

Το SHIFT-G θέτει τη προτροπή στο τέλος του κειμένου..


6.2.2.2. Βασικές λειτουργίες

Αυτές είναι μερικές δημοφιλείς εντολές vi:


6.2.2.3. Εντολές εναλλαγής καταστάσεων

Το πλήκτρο Esc μας επιστρέφει στη κατάσταση εντολών. Αν δεν ξέρουμε σε ποια κατάσταση βρισκόμαστε, ή αν η έκδοση του vi είναι παλιά, τότε πιέζουμε Esc για να είστε σίγουροι οτι επιστρέψαμε στη κατάσταση εντολών. Αν βρισκόμαστε ήδη στη κατάσταση εντολών και πιέσουμε το Esc, τότε ακούγεται χαρακτηριστικός ήχος (μπιπ).


6.2.3. Ο εύκολος τρόπος

Αντί να διαβάσετε τις οδηγίες, που είναι αρκετά βαρετό, μπορείτε να χρησιμοποιήσετε το vimtutor για να μάθετε τις εντολές του Vim. Είναι μια εκπαιδευτική εισαγωγή τριάντα λεπτών και διδάσκει τη βασική λειτουργικότητα του Vim με οκτώ εύκολες ασκήσεις. Αν και δεν μπορείτε να μάθετε όλα για το vim σε μισή ώρα, η εκπαιδευτική εισαγωγή είναι σχεδιασμένη για να μάθετε τη τα βασικά του Vim.

Τόσο στο UNIX όσο και στα MS Windows, αν ο Vim είναι σωστά εγκατεστημένος, μπορείτε να ξεκινήσετε από το φλοιό την εκπαιδευτική εισαγωγή, με την εντολή vimtutor. Θα αντιγράψει ένα αρχείο της εισγωγής στον οικείο κατάλογό σας, ώστε να μην καταστρέψετε το πρωτότυπο. Υπάρχουν και μερικές μεταφρασμένες εκδόσεις. Για παράδειγμα η Γαλλική έκδοση καλείται με την εντολή vimtutor fr (αν είναι εγκατεστημένη).


6.3. Το Linux στο γραφείο

6.3.1. Ιστορικό

Κατά τη τελευταία δεκαετία το περιβάλλον γραφείου κυριαρχείται από το by MS Office, και, πρέπει να παραδεχτούμε οτι τα Microsoft Word, Excel και PowerPoint είναι de facto πρότυπα που θα χρησιμοποιήσετε αργά ή γρήγορα.

Αυτό το μονοπώλιο της Microsoft απεδείχθη μεγάλο μειονέκτημα για τη προσέλκυση χρηστών στο Linux, έτσι μια ομάδα Γερμανών ξεκίνησε το έργο StarOffice, που ο στόχος του είναι να δημιουργηθεί κλώνος του MS Office. Η εταιρία τους, η StarDivision, αγοράστηκε από τη Sun Microsystems στα τέλη του 1990, πριν την έκδοση 5.2. Η Sun συνεχίζει την ανάπτυξη αλλά έχει περιορίσει τη πρόσβαση στο πηγαίο κώδικα. Παρ' όλα αυτά, η ανάπτυξη του αρχικού πηγαίου κώδικα συνεχίστηκε από την κοινότητα του Ανοικτού Λογισμικού, με το όνομα OpenOffice. Το OpenOffice είναι πλέον διαθέσιμο σε διάφορες πλατφόρμες, όπως σε MS Windows, Linux, MacOS και Solaris. Στην ενότητα Ενότητα 1.3.2 βλέπετε μια εικόνα του.

Σχεδόν ταυτόχρονα, ξεκίνησαν μερικά άλλα γνωστά έργα. Μια συνηθισμένη εναλλακτική του MS Office είναι το KOffice, ένα πακέτο λογισμικού του KDE που είναι δημοφιλές ανάμεσα στους χρήστες του SuSE Linux. Περιλαμβάνει προγράμματα συμβατά με MS Word και Excel, και πολλά άλλα.

Υπάρχουν άλλα μικρότερα έργα που ασχολούνται με τμήματα του MS Office, όπως το Abiword και το MS Wordview που είναι συμβατά με το MS Word, και το Gnumeric για την διαχείριση αρχείων συμβατών με το Excel.


6.3.2. Πακέτα λογισμικού

Οι τρέχουσες διανομές έχουν όλα τα απαραίτητα εργαλεία. Παρέχουν όλες τις απαραίτητες οδηγίες και μενού Help, και έτσι δεν τις συζητάμε σε λεπτομέρειες. Ορισμένοι ιστοτόποι είναι


6.3.3. Σχόλια

6.3.3.1. Γενική χρήση των τεκμηρίων

Προσπαθήστε να περιορίσετε τη χρήση των τεκμηρίων γραφείου εκεί που πρέπει: στο γραφείο.

Ένα παράδειγμα: οι περισσότεροι χρήστες Linux εκνευρίζονται όταν λαμβάνουν ένα mail που λέει κάτι σαν: "Hello, I want to tell you something, see attach", και μετά ένα συνημμένο που είναι ένα τεκμήριο MS Word συμβατό με κάτι σαν: "Hello my friend, how is your new job going and will you have time to have lunch with me tomorrow?" Επίσης είναι κακή ιδέα να επισυνάπτετε την υπογραφή σας σε ένα τέτοιο αρχείο, για παράδειγμα. Αν θέλετε να υπογράψετε μηνύματα και αρχεία, χρησιμοποιείστε GPG, το PGP-συμβατό GNU Privacy Guard ή SSL (Secure Socket Layer) πιστοποιητικό.

Αυτοί οι χρήστες δεν ενοχλούνται γιατί δεν μπορούν να διαβάσουν αυτά τα κείμενα, ή γιατί τα προγράμματα MS Windows δημιουργούν πολύ μεγάλα αρχεία, αλλά περισσότερο γιατί υποχρεώνονται εγκαταστήσουν και να χρησιμοποιήσουν αυτά τα προγράμματα .


6.3.3.2. Αρχεία διαμόρφωσης συστήματος και χρηστών

Στο επόμενο κεφάλαιο, που αρχίζουμε να διαμορφώνουμε το περιβάλλον μας, και αυτό μπορεί να περιλαμβάνει τροποποίηση διαφόρων τύπων αρχείων που καθορίζουν τη συμπεριφορά ενός προγράμματος.

Μη χρησιμοποιείτε εφαρμογές γραφείου για τη τροποποίηση αυτών των αρχείων!

Οι εφαρμογές γραφείου θα προσθέσουν αρκετές γραμμές κώδικα στα αρχεία, που ορίζουν το μορφότυπο του αρχείου και τους τύπους των γραμματοσειρών. Αυτές οι γραμμές δεν θα διερμηνευτούν σωστά από τα προγράμματα που εξαρτώνται από αυτά τα αρχεία. Σε μερικές περιπτώσεις, μπορείτε να αποθηκεύσετε απλό κείμενο μέσω εφαρμογής γραφείου, αλλά αργά ή γρήγορα θα βρεθείτε σε δύσκολη θέση.


6.3.3.3. Αλλά θέλω ένα γραφικό συντάκτη κειμένου!

Αν πραγματικά επιμένετε, προσπαθήστε τους συντάκτες gedit, kedit, kwrite ή xedit; tαυτά τα προγράμματα επεξεργάζονται καθαρά αρχεία κειμένου, αυτό δηλαδή που χρειαζόμαστε. Αλλά, και πάλι είναι προτιμότερο να μάθετε να χρησιμοποιείτε ο vim ή ο emacs.

Μια αποδεκτή εναλλακτική είναι ο gvim (vim-gnome στο repository Ubuntu), η Gnome έκδοση του vim. Πάλι θα χρειάζεστε εντολές του vi, αλλά αν κολλήσετε μπορείτε να ψάξετε στα menu.


6.4. Summary

Σε αυτό το κεφάλαιο μάθαμε να χρησιμοποιούμε ένα συντάκτη κειμένου. Αν και εξαρτάται από τις προσωπικές σας προτιμήσεις ποιόν συντάκτη θα χρησιμοποιήσετε, είναι αναγκαίο να μάθετε καλά τουλάχιστο ένα συντάκτη κειμένου.

Ο συντάκτης vi είναι διαθέσιμος σε κάθε σύστημα UNIX.

Οι περισσότερες διανομές Linux περιλαμβάνουν πακέτα λογισμικού γραφείου και ένα γραφικό συντάκτη κειμένου.


6.5. Ασκήσεις

Αυτό το κεφάλαιο έχει μόνο μια άσκηση: ξεκινήστε την εκπαιδευτική εισαγωγή στο Vim με την εντολή vimtutor σε ένα παράθυρο τερματικού και εκτελέστε όλες τις ασκήσεις.

Εναλλακτικά ξεκινήστε το emacs και πληκτρολογήστε Ctrl+H και μετά T για να καλέσετε την εκπαιδευτική εισαγωγή στο Emacs.

Η εξάσκηση είναι ο μόνος τρόπος να μάθετε!


Κεφάλαιο 7. Οικείο περιβάλλον

Αυτό το κεφάλαιο αναφέρεται στη διαμόρφωση του περιβάλλοντός σας. Τώρα που γνωρίζετε τη χρήση ενός συντάκτη, μπορείτε να τροποποιήσετε διάφορα αρχεία που θα σας βοηθήσουν να ελέγξετε το περιβάλλον σας. Στο κεφάλαιο αυτό θα μάθετε για:

7.1. Γενική τακτοποίηση

7.1.1. Εισαγωγή

Όπως είπαμε και νωρίτερα, είναι αρκετά εύκολο να κάνετε το σύστημα άνω-κάτω. Δεν μπορούμε να δώσουμε αρκετή έμφαση στο πόσο σημαντικό είναι να κρατήσουμε το σύστημα τακτοποιημένο. Αν το συνηθίσετε από την αρχή, θα σαν γίνει μια καλή συνήθεια που θα σας σώσει πολύ χρόνο όταν προγραμματίζετε ή διαχειρίζεστε συστήματα Linux ή UNIX. Να μερικοί τρόποι να κάνετε τη ζωή σας ευκολότερη:


7.1.2. Κάντε χώρο

Σε μερικά συστήματα, το σύστημα quota (μεριδίων) ή οι περιορισμοί στη χωρητικότητα του δίσκου σας μπορεί να σας εξαναγκάσουν να καθαρίζετε τον οικείο σας κατάλογο από καιρό σε καιρό,. Η ενότητα αυτή συζητά μερικές μεθόδους, εκτός από τη χρήση της εντολής rm, για να ανακτήσετε χώρο στο δίσκο.

Κατ' αρχήν εκτελέστε την εντολή quota -v για να δείτε πόσος ελεύθερος χώρος σας μένει (αν βρίσκεστε σύστημα quota). (Διαφορετικά ελέγξτε το δίσκο με την εντολή df, ΣτΜ.).


7.1.2.1. Άδειασμα αρχείων

Μερικές φορές το περιεχόμενο ενός αρχείου δεν σας ενδιαφέρει, αλλά χρειάζεστε το όνομα του αρχείου σαν σήμανση (για παράδειγμα, χρειάζεστε μόνο την ημερομηνία-ώρα ενός αρχείου, μια υπενθύμιση οτι ήταν εκεί ή οτι πρέπει να είναι εκεί στο μέλλον). Αυτό μπορεί να γίνει στους φλοιούς Bourne και Bash με μια κενή ανακατεύθυσνη:

andy:~> cat wishlist > placeholder

andy:~> ls -la placeholder
-rw-rw-r--    1 andy   andy       200 Jun 12 13:34 placeholder

andy:~>  > placeholder

andy:~> ls -la placeholder

-rw-rw-r--    1 andy   andy         0 Jun 12 13:35 placeholder
      

Η διαδικασία αδειάσματος ενός ενός υπάρχοντος αρχείου λέγεται αποκοπή (truncating).

Για τη δημιουργία ενός νέου άδειου αρχείου, μπορούμε να χρησιμοποιήσουμε την εντολή touch. Σε ένα υπάρχον αρχείο, η touch απλά ενημερώνει την ημερομηνία-ώρα. Οι σελίδες τεκμηρίωσης για τη touch έχει περισσότερες λεπτομέρειες.

Για να αδειάσετε "σχεδόν" ένα αρχείο, χρησιμοποιείστε την εντολή tail. Έστω οτι ο χρήστης andy έχει ένα αρχείο wishlist από το οποίο θέλει να κρατήσει μόνο 5 τις τελευταίες γραμμές:

andy:~> tail -5 wishlist > newlist

andy:~> cat newlist > wishlist

andy:~> rm newlist
      

7.1.2.2. Λίγα για τα αρχεία καταγραφής

Μερικά προγράμματα Linux επιμένουν να γράφουν κάθε είδους έξοδο σε αρχεία καταγραφής. Συνήθως υπάρχουν επιλογές στο επίπεδο εκσφαλμάτωσης του προγράμματος ώστε να καταγράφονται μόνο τα σφάλματα, ή να καταγράφεται η ελάχιστη πληροφορία. Αλλά και πάλι μπορεί να μη χρειάζεστε αυτά τα αρχεία. Παρακάτω δίνονται μερικοί τρόποι να απαλλαγείτε από τα αρχεία καταγραφής ή να περιορίσετε το μέγεθός τους:


7.1.2.3. Ταχυδρομείο

Καθαρίζετε συχνά το κατάλογο mailbox, κάνετε υπο-καταλόγους ή ανακατευθύνετε το ταχυδρομείο με το procmail (δες στις σελίδες τεκμηρίωσης) ή με τα φίλτρα της εφαρμογής ταχυδρομείο που προτιμάτε. Αν έχετε κάδο αποριμμάτων, καθαρίζετε τον συχνά .

Για την ανακατεύθυνση του ταχυδρομείου, χρησιμοποιείστε το αρχείο .forward στον οικείο κατάλογό σας. Η υπηρεσία ταχυδρομείου του Linux εξετάζει αυτό το αρχείο όταν διανέμει τοπικό ταχυδρομείο. Το περιεχόμενο του αρχείου καθορίζει τι θα κάνει η υπηρεσία ταχυδρομείου. Μπορεί να περιλαμβάνει μια γραμμή που περιλαμβάνει μια πλήρη διεύθυνση E-mail. Σε αυτή τη περίπτωση το σύστημα θα στείλει όλο το ταχυδρομείο σε αυτή τη διεύθυνση. Για παράδειγμα, όταν νοικιάσετε ένα ιστοτόπο, μπορεί να θέλετε να προωθήσετε τα μηνύματα του webmaster στο δικό σας λογαριασμό, για να μη χρησιμοποιείτε νοικιασμένο χώρο δίσκου. Το .forward του θα μοιάζει κάπως έτσι:

webmaster@www ~/> cat .forward
mike@pandora.be
      

Η χρήση της προώθησης ταχυδρομείου μπορεί να σας βοηθήσει να μη διαβάζετε πολλά διαφορετικά mailboxes. Μπορείτε να συλλέξετε σε ένα σημείο τα μηνύματα από όλες τις διευθύνσεις σας.

Όταν αλλάζετε σύστημα μπορείτε να ζητήσετε από τον διαχειριστή συστήματος να ορίσει ένα σημείο προώθησης του ταχυδρομείου σας από τον παλιό λογαριασμό σας στο καινούργιο.


7.1.2.4. Γλιτώστε χώρο με ένα σύνδεσμο

Όταν διάφοροι χρήστες χρειάζονατι πρόσβαση στο ίδιο αρχείο ή πρόγραμμα, όταν το όνομα του αρχείου είναι πολύ μεγάλο ή δύσκολο να το θυμηθούμε, μπορούμε να χρησιμοποιήσουμε ένα συμβολικό σύνδεσμο αντί για αντίγραφο.

Μπορούμε να έχουμε πολλούς συμβολικούς συνδέσμους με διαφορετικά ονόματα, για παράδειγμα ένας σύνδεσμος στο κατάλογο ενός χρήστη μπορεί να λέγεται monfichier, και στο κατάλογο ενός άλλου ο σύνδεσμος να λέγεται mylink. Πολλαπλοί σύνδεσμοι (διαφορετικά ονόματα) προς το ίδιο αρχείο μπορούν να υπάρχουν και στον ίδιο κατάλογο. Αυτό συνήθως συμβαίνει στο κατάλογο /lib :όταν εισάγετε την εντολή:

ls -l /lib

θα δείτε οτι πολλοί σύνδεσμοι δείχνουν προς τα ίδια αρχεία. Αυτοί δημιουργούνται έτσι ώστε τα προγράμματα που αναζητούν συγκεκριμένο όνομα δεν θα σταματήσουν εξ' αιτίας πιθανής μετονομασίας.


7.1.2.5. Περιορίστε τα μεγέθη των αρχείων

Ο φλοιός περιέχει μια ενσωματωμένη εντολή που περιορίζει τα μεγέθη των αρχείων, η ulimit, που μπορεί επίσης να χρησιμοποιηθεί για την εμφάνιση περιορισμών στους πόρους του συστήματος:

cindy:~> ulimit -a
core file size (blocks)     0
data seg size (kbytes)      unlimited
file size (blocks)          unlimited
max locked memory (kbytes)  unlimited
max memory size (kbytes)    unlimited
open files                  1024
pipe size (512 bytes)       8
stack size (kbytes)         8192
cpu time (seconds)          unlimited
max user processes          512
virtual memory (kbytes)     unlimited
      

Η Cindy δεν είναι προγραμματίστρια και δεν ενδιαφέρεται για τα core dumps, που είναι χρήσιμα για εκσφαλμάτωση προγραμμάτων. Αν όντως χρειάζεστε τα core dumps, μπορείτε να ορίσετε το μέγεθός τους με την εντολή ulimit. Οι σελίδες τεκμηρίωσης του bash έχουν λεπτομερείς πληροφορίες.

Note

Core dump?

 

Ένα αρχείο με το όνομα core ή απεικόνιση μνήμης (core dump) δημιουργείται μερικές φορές όταν κάτι πάει στραβά κατά την εκτέλεση ενός προγράμματος. Το αρχείο core περιέχει ένα αντίγραφο της μνήμης εργασίας (workspace) του προγράμματος την στιγμή που ανέκυψε το σφάλμα. Το αρχείο μπορεί να διαβαστεί μέσω προγραμμάτων εκσφαλμάτωσης.


7.1.2.6. Συμπιεσμένα αρχεία

Τα συμπιεσμένα αρχεία είναι χρήσιμε γιατί καταλαμβάνουν λιγότερο χώρο στο σκληρό δίσκο. Ένα άλλο πλεονέκτημα είναι οτι απαιτείται μικρότερο εύρος ζώνης για την αποστολή ενός συμπιεσμένου αρχείου μέσω του δικτύου. Πολλά αρχεία, όπως οι σελίδες τεκμηρίωσης (man, Info) είναι αποθηκευμένες στο σύστημά σας σε συμπιεσμένη μορφή. Βέβαια, η αποσυμπίεση και επανα-συμπίεση στο δίσκο απαιτεί αρκετό χρόνο. Οι περισσότεροι δεν θα ήθελαν να εκτελούν αυτοί τη διαδικασία συνέχεια, μόνοι τους. Πιθανότατα θα ξεχνούσαν να επανα-συμπιέσουν το αρχείο τεκμηρίωσης μετά την ανάγνωση.

Γι' αυτό υπάρχουν εργαλεία που εργάζονται με συμπιεσμένα αρχεία, απο-συμπιέζοντας κατευθείαν στη κύρια μνήμη. Το συμπιεσμένο αρχείο μένει στο δίσκο σας άθικτο, και δεν δημιουργείται απο-συμπιεσμένο αρχείο στο δίσκο. Τα περισσότερα συστήματα υποστηρίζουν εργαλεία όπως τα zgrep, zcat, bzless και άλλα που αποτρέπουν τη περιττή απο-συμπίεση/συμπίεση. Δείτε το κατάλογο εκτελέσιμων του συστήματός σας και τις σελίδες τεκμηρίωσης.

Δείτε το Κεφάλαιο 9 για περισσότερα σχετικά με τη συμπίεση αρχείων και τη δημιουργία αρχειοθηκών (archives).


7.2. Το περιβάλλον κειμένου

7.2.1. Μεταβλητές περιβάλλοντος

7.2.1.1. Γενικά

Ήδη έχουμε αναφέρει μερικές μεταβλητές περιβάλλοντος, όπως τις PATH και HOME. Μέχρι τώρα, είδαμε μόνο λίγα παραδείγματα όπου οι μεταβλητές αυτές εξυπηρετούν συγκεκριμένους σκοπούς του φλοιού. Αλλά υπάρχουν πολλές άλλες υπηρεσίες του Linux που χρειάζονται τέτοιες πληροφορίες για να λειτουργήσουν σωστά.

Τι άλλες πληροφορίες χρειάζονται τα προγράμματα, εκτός από τις διαδρομές και τον οικείο κατάλογο;

Πολλά προγράμματα θέλουν να ξέρουν τον τύπο του τερματικού που χρησιμοποιείτε, αυτή η πληροφορία αποθηκεύεται στη μεταβλητή TERM. Στη κατάσταση κειμένου, μάλλον θα είναι η προσομοίωση τερματικού linux, σε κατάσταση γραφικών, πιθανότατα θα χρησιμοποιείτε τερματικό Χ, xterm. Πολλά προγράμματα θέλουν να ξέρουν ποιος είναι ο προτιμώμενος συντάκτης σας, σε περίπτωση που θέλουν να ξεκινήσουν ένα συντάκτη ως υπο-διεργασία. Ο τύπος φλοιού που χρησιμοποιείτε είναι αποθηκευμένος στη μεταβλητή SHELL, ο τύπος του λειτουργικού συστήματος στο OS κλπ. Μια λίστα των μεταβλητών που είναι ήδη καθορισμένα στη σύνοδό σας φαίνεται με την εντολή printenv.

Ο φλοιός διαχειρίζεται τις μεταβλητές περιβάλλοντος. Σε αντίθεση με τις κανονικές μεταβλητές φλοιού, οι μεταβλητές περιβάλλοντος κληροδοτούνται σε όποιο πρόγραμμα ξεκινήσετε, συμπεριλαμβανομένου και του φλοιού. Οι νέες διεργασίες παίρνουν ένα αντίγραφο αυτών των μεταβλητών, που μπορούν να τις διαβάσουν, να τις τροποποιήσουν και να τις περάσουν στις διεργασίες – παιδιά τους.

Δεν υπάρχει τίποτε ιδιαίτερο με τα ονόματα των μεταβλητών, εκτός από το γεγονός οτι οι πιο συνηθισμένες αναγράφονται με κεφαλαία γράμματα κατά σύμβαση. Μπορείτε να προσθέσετε οτι όνομα θέλετε, αλλά υπάρχουν μερικά ονόματα σημαντικών μεταβλητών που πρέπει να είναι τα ίδια σε κάθε σύστημα Linux, όπως οι PATH και HOME.


7.2.1.2. Εξαγωγή μεταβλητών

Το περιεχόμενο μιας συγκεκριμένης μεταβλητής μπορεί να εμφανιστεί με τη εντολή echo, όπως στα παραδείγματα:

debby:~> echo $PATH
/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin:/usr/local/bin

debby:~> echo $MANPATH
/usr/man:/usr/share/man/:/usr/local/man:/usr/X11R6/man
      

Αν θέλετε να αλλάξετε το περιεχόμενο μιας μεταβλητής, ώστε να είναι χρήσιμη στα προγράμματά σας, πρέπει να εξάγετε τη νέα τιμή της μεταβλητής από το περιβάλλον σας στο περιβάλλον του προγράμματος. Ένα συνηθισμένο παράδειγμα είναι η εξαγωγή της μεταβλητής PATH. Η αλλαγή της τιμής γίνεται όπως παρακάτω, ας πούμε για να παίξετε ένα προσομοιωτή πτήσης που βρίσκεται στο /opt/FlightGear/bin:

debby:~> PATH=$PATH:/opt/FlightGear/bin
      

Αυτή η εντολή ενημερώνει τον φλοιό να ψάχνει όχι μόνο στις ήδη γνωστές διαδρομές αναζήτησης, $PATH, αλλά επίσης και στο κατάλογο /opt/FlightGear/bin.

Όμως, όσο η νέα τομή της μεταβλητής PATH δεν είναι γνωστή (έξω από το περιβάλλον της τρέχουσας συνόδου του φλοιού σας), τα πράγματα εξακολουθούν να μη δουλεύουν:

debby:~> runfgfs
bash: runfgfs: command not found
      

Η εξαγωγή των μεταβλητών γίνεται με την ενσωματωμένη εντολή export:

debby:~> export PATH

debby:~> runfgfs
--flight simulator starts--
      

Στο Bash, συνήθως το κάνουμε σε ένα κομψό βήμα:

export VARIABLE=value

Η ίδια τεχνική χρησιμοποιείται για τη μεταβλητή MANPATH, που λέει στην εντολή man που να ψάχνει για συμπιεσμένες σελίδες τεκμηρίωσης (man pages). Αν το νέο λογισμικό σας εγκατασταθεί σε νέους ή ασυνήθιστους καταλόγους, και η τεκμηρίωση θα βρίσκεται πιθανότατα σε ασυνήθιστο κατάλογο. Αν θέλετε να διαβαετε τις σελίδες τεκμηρίωσης του νέου λογισμικού, θα πρέπει να επεκτείνετε τη μεταβλητή MANPATH:

debby:~> export MANPATH=$MANPATH:/opt/FlightGear/man

debby:~> echo $MANPATH
/usr/man:/usr/share/man:/usr/local/man:/usr/X11R6/man:/opt/FlightGear/man
      

Μπορείτε να αποφύγετε την εκ νέου πληκτρολόγηση της εντολής κάθε φορά που ξεκινάτε νέα σύνοδο φλοιού, αν την προσθέστε στα αρχεία ρύθμισης φλοιού, δείτε Ενότητα 7.2.2.


7.2.1.3. Δεσμευμένες μεταβλητές

Ο ακόλουθος πίνακας δίνει μια σύνοψη των πιο συνηθισμένων δεσμευμένων μεταβλητών:

Πίνακας 7-1. Συνήθεις μεταβλητές περιβάλλοντος

Όνομα μεταβλητής

Αποθηκευμένη πληροφορία

DISPLAY

ταυτοποίηση του διακομιστή απεικόνισης (display server) στο σύστημα X Window

DOMAIN

όνομα πεδίου Διαδικτύου (domain name)

EDITOR

αποθηκεύει τον βασικό συντάκτη κειμένου

HISTSIZE

μέγεθος αρχείου ιστορικού του φλοιού σε αριθμό γραμμών

HOME

διαδρομή οικείου καταλόγου

HOSTNAME

όνομα τοπικού υπολογιστή

INPUTRC

διαδρομή του αρχείου ορισμού συσκευών εισόδου, όπως πληκτρολόγιο

LANG

προτιμώμενη γλώσσα

LD_LIBRARY_PATH

διαδρομή αναζήτησης βιβλιοθηκών

LOGNAME

όνομα σύνδεσης (login)

MAIL

διαδρομή του καταλόγου εισερχόμενου ταχυδρομείου

MANPATH

διαδρομή αναζήτησης σελίδων τεκμηρίωσης (man)

OS

περιγραφή λειτουργικού συστήματος

OSTYPE

και άλλες πληροφορίες, όπως έκδοση κλπ.

PAGER

σελιδοποιητής ανάγνωσης, που χρησιμοποιείται από προγράμματα όπως το man.

PATH

διαδρομή αναζήτησης για εντολές

PS1

κύρια προτροπή

PS2

δευτερεύουσα προτροπή

PWD

τρέχων κατάλογος εργασίας

SHELL

τρέχων φλοιός

TERM

τύπος τερματικού

UID

αριθμός ταυτότητας χρήστης (user ID)

USER(NAME)

όνομα χρήστη

VISUAL

βασικός συντάκτης κειμένου πλήρους οθόνης

XENVIRONMENT

διαδρομή προσωπικών ρυθμίσεων για τη συμπεριφορά των Χ Windows

XFILESEARCHPATH

διαδρομή αναζήτησης βιβλιοθηκών γραφικών

Πολλές από τις μεταβλητές δεν είναι μόνο δεσμευμένες αλλά και προκαθορισμένες, μέσω αρχείων διαμόρφωσης. Το συζητούμε στην επόμενη ενότητα


7.2.2. Αρχεία ρύθμισης φλοιού

Όταν εισάγετε την εντολή ls -al στον οικείο σας κατάλογο, εμφανίζεται μια μεγάλη λίστα αρχείων, πολλά από τα οποία αρχίζουν με τελεία, μεταξύ των οποίων μερικά που αρχίζουν με . και τελειώνουν με rc. Στη περίπτωση του bash, το αρχείο λέγεται .bashrc. Πρόκειται για το τοπικό αντίστοιχο του αρχείου διαμόρφωσης φλοιού σε επίπεδο συστήματος /etc/bashrc.

Όταν συνδέεστε στο σύστημα με διαλογικό φλοιό, η login εκτελεί τη ταυτοποίηση, ρυθμίζει αρχικά περιβάλλον (με βάση το αρχείο /etc/passwd)και καλεί το φλοιό. Στη περίπτωση του bash, το επόμενο βήμα είναι η ανάγνωση του γενικού προφίλ από το αρχείο /etc/profile αν υπάρχει. Στη συνέχεια το bash αναζητά τα αρχεία ~/.bash_profile, ~/.bash_login και ~/.profile, με αυτή τη σειρά , και εκτελεί τις εντολές που περιέχονται σε αυτά, αν υπάρχουν. Αν κανένα αρχείο δεν υπάρχει, εφαρμόζεται το αρχείο /etc/bashrc.

Όταν υπάρχει φλοιός σύνδεσης, κατά την αποσύνδεση το bash διαβάζει και εκτελεί τις εντολές από το αρχείο ~/.bash_logout, αν αυτό υπάρχει.

Η διαδικασία αυτή εξηγείται λεπτομερώς στις σελίδες τεκμηρίωσης των login και bash.


7.2.3. Ένα τυπικό σύνολο αρχείων ρύθμισης

7.2.3.1. Παράδειγμα /etc/profile

Ας δούμε μερικά αρχεία διαμόρφωσης. Πρώτα διαβάζεται το αρχείο /etc/profile, όπου ρυθμίζονται μεταβλητές όπως η PATH, USER και HOSTNAME:

debby:~> cat /etc/profile
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc


# Path manipulation
if [ `id -u` = 0 ] && ! echo $PATH | /bin/grep -q "/sbin" ; then
    PATH=/sbin:$PATH
fi

if [ `id -u` = 0 ] && ! echo $PATH | /bin/grep -q "/usr/sbin" ; then
    PATH=/usr/sbin:$PATH
fi

if [ `id -u` = 0 ] && ! echo $PATH | /bin/grep -q "/usr/local/sbin"
    then
    PATH=/usr/local/sbin:$PATH
fi

if ! echo $PATH | /bin/grep -q "/usr/X11R6/bin" ; then
    PATH="$PATH:/usr/X11R6/bin"
fi
      

Αυτές οι γραμμές ρυθμίζουν τη διαδρομή αναζήτησης εντολών: αν ο φλοιός σύνδεσης ανήκει στον υπερ-χρήστη (root) με αριθμό ταυτότητας (user ID) 0, ελέγχεται αν οι κατάλογοι /sbin, /usr/sbin και /usr/local/sbin είναι στη διαδρομή. Αν όχι προστίθενται. Επίσης, για όλους τους χρήστες προστίθεται στη διαδρομή ο κατάλογος /usr/X11R6/bin αν δεν υπάρχει ήδη.

# No core files by default
ulimit -S -c 0 > /dev/null 2>&1

'Ολα τα άχρηστα πάνε στο /dev/null εκτός αν ο χρήστης αλλάξει αυτή τη ρύθμιση.

USER=`id -un`
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
HOSTNAME=`/bin/hostname`
HISTSIZE=1000

Εδώ γενικές μεταβλητές λαμβάνουν κατάλληλες τιμές.

if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
    INPUTRC=/etc/inputrc
fi

Αν η μεταβλητή INPUTRC δεν έχει ρυθμιστεί, και δεν υπάρχει αρχείο .inputrc στον οικείο κατάλογο, φορτώνεται το προεπιλεγμένο αρχείο ελέγχου εισόδου.

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC

Όλες οι μεταβλητές εξάγονται, ώστε να είναι διαθέσιμες σε άλλα προγράμματα που ζητούν πληροφορίες για το περιβάλλον σας.


7.2.3.2. Ο κατάλογος profile.d

for i in /etc/profile.d/*.sh ; do
    if [ -r $i ]; then
        . $i
    fi
done
unset i

Όλα τα σενάρια φλοιού στο κατάλογο /etc/profile.d διαβάζονται και εκτελούνται. Κάνουν πράγματα όπως ενεργοποίηση του color-ls, συσχετίζει το vi με το vim, θέτει τοπικές ρυθμίσεις κλπ. Η προσωρινή μεταβλητή i δεν ρυθμίζεται για να μη διαταραχθεί η συμπεριφορά του φλοιού αργότερα.


7.2.3.3. Παράδειγμα .bash_profile

Μετά το bash ψάχνει για αρχείο .bash_profile στον οικείο κατάλογο του χρήστη:

debby:~> cat .bash_profile 
#################################################################
#                                                               #
#   .bash_profile file                                          #
#                                                               #
#   Executed from the bash shell when you log in.               #
#                                                               #
#################################################################

source ~/.bashrc
source ~/.bash_login
      

Αυτό το πολύ απλό αρχείο λέει στο φλοιό να διαβάσει πρώτα το ~/.bashrc και μετά το ~/.bash_login. Θα συναντήσετε την ενσωματωμένη εντολή φλοιού source: χρησιμοποιείται για να εφαρμόσει αλλαγές διαμόρφωσης στο τρέχον περιβάλλον.


7.2.3.4. Παράδειγμα .bash_login

Το αρχείο ~/.bash_login ορίζει την προεπιλεγμένη ρύθμιση αδειών πρόσβασης των αρχείων θέτοντας τη τιμή της umask, δείτε Ενότητα 3.4.2.2. Το αρχείο ~/.bashrc χρησιμοποιείται μια ομάδα συνωνύμων ειδικά για τον χρήστη, υπηρεσίες και προσωπικές μεταβλητές περιβάλλοντος. Πρώτα διαβάζει το /etc/bashrc, που περιγράφει τη προεπιλεγμένη προτροπή (PS1) και η προεπιλεγμένη τιμή umask. Μετά μπορείτε να προσθέσετε τις δικές σας ρυθμίσεις. Αν δεν υπάρχει το αρχείο ~/.bashrc, εξ' ορισμού διαβάζεται το /etc/bashrc.


7.2.3.5. Παράδειγμα /etc/bashrc

Το αρχείο /etc/bashrc μοιάζει κάπως έτσι:

debby:~> cat /etc/bashrc
# /etc/bashrc

# System wide functions and aliases
# Environment stuff goes in /etc/profile

# by default, we want this to get set.
# Even for non-interactive, non-login shells.
if [ `id -gn` = `id -un` -a `id -u` -gt 99 ]; then
        umask 002
else
        umask 022
fi
      

Αυτές οι γραμμές θέτουν τη τιμή της umask . Μετά, ανάλογα με το φλοιό, ρυθμίζεται η προτροπή:

# are we an interactive shell?
if [ "$PS1" ]; then
  if [ -x /usr/bin/tput ]; then
    if [ "x`tput kbs`" != "x" ]; then 
# We can't do this with "dumb" terminal
      stty erase `tput kbs`
    elif [ -x /usr/bin/wc ]; then
      if [ "`tput kbs|wc -c `" -gt 0 ]; then 
# We can't do this with "dumb" terminal
        stty erase `tput kbs`
      fi
    fi
  fi
  case $TERM in
        xterm*)
        if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
                PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
        else
   PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:\
${PWD/$HOME/~}\007"'
        fi
    ;;
        *)
   [ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=\
/etc/sysconfig/bash-prompt-default
            ;;
    esac
    [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
    
    if [ "x$SHLVL" != "x1" ]; then # We're not a login shell
        for i in /etc/profile.d/*.sh; do
            if [ -x $i ]; then
                . $i
            fi
        done
    fi
fi

7.2.3.6. Παράδειγμα .bash_logout

Κατά την αποσύνδεση, εκτελούνται οι εντολές στο ~/.bash_logout, που μπορούν λόγου χάρη να καθαρίσουν το τερματικό, ώστε ο επόμενος χρήστης να παραλαμβάνει άδεια οθόνη:

debby:~> cat .bash_logout
# ~/.bash_logout

clear
      

Θα δούμε από πιο κοντά πως δουλεύουν αυτά τα σενάρια στην επόμενη ενότητα. Καλό είναι να έχετε πρόχειρη τη τεκμηρίωση info bash.


7.2.4. Η προτροπή του Bash

7.2.4.1. Εισαγωγή

Η προτροπή του Bash μπορεί να κάνει αρκετά περισσότερα από το να εμφανίζει απλή πληροφορία όπως το όνομα του χρήστη, το όνομα του υπολογιστή και κάποια ένδειξη του τρέχοντος καταλόγου εργασίας. Μπορούμε να προσθέσουμε πληροφορία όπως ημερομηνία και ώρα, αριθμό συνδεδεμένων χρηστών κλπ.

Πριν ξεκινήσουμε, όμως, ας αποθηκεύσουμε τη τρέχουσα προτροπή σε μια άλλη μεταβλητή περιβάλλοντος:

[jerry@nowhere jerry]$ MYPROMPT=$PS1

[jerry@nowhere jerry]$ echo $MYPROMPT
[\u@\h \W]\$

[jerry@nowhere jerry]$
      

Αν τώρα αλλάξουμε τη προτροπή μας, δίνοντας ας πούμε τη εντολή PS1="->", μπορούμε πάντα να επιστρέψουμε στην αρχική προτροπή με την εντολή PS1=$MYPROMPT. Φυσικά, θα ανακτήσετε την αρχική προτροπή σας αν αποσυνδεθείτε και επανασυνδεθείτε, αρκεί να μην έχετε τροποποιήσει ανάλογα και το αρχείο διαμόρφωσης του φλοιού.


7.2.4.2. Μερικά παραδείγματα

Για να καταλάβουε τις προτροπές και τις ακολουθίες διαφυγής, αναφερόμαστε στις σελίδες τεκμηρίωσης του Bash.

Οι μεταβλητές εξάγονται ώστε οι μετέπειτα εκτελούμενες εντολές να γνωρίζουν την αλλαγή στο περιβάλλον. Η μόνιμη ρύθμιση της προτροπής καλό είναι να τοποθετείται αρχείο διαμόρφωσης ~/.bashrc.

Αν θέλετε, οι προτροπές μπορούν να εκτελούν σενάρια φλοιού και να συμπεριφέρονται διαφορετικά υπό διαφορετικές συνθήκες. Μπορείτε ακόμη να βάλετε τη προτροπή να παίζει μουσική κάθε φορά που εισάγετε μια εντολή, αλλά γρήγορα γίνεται βαρετό. Για περισσότερες πληροφορίες δείτε το Bash-Prompt HOWTO.


7.2.5. Σενάρια φλοιού

7.2.5.1. Τι είναι σενάριο;

Ένα σενάριο φλοιού, όπως είδαμε στα παραδείγματα των αρχείων ρύθμισης φλοιού, είναι ένα αρχείο κειμένου που περιέχει εντολές φλοιού. Όταν ένα τέτοιο αρχείο χρησιμοποιείται ως πρώτο όρισμα (εκτός των επιλογών) όταν καλούμε το Bash, και δεν προηγείται επιλογή -c ή -s, το Bash διαβάζει, εκτελεί εντολές από το αρχείο και τερματίζει. Αυτός ο τρόπος λειτουργίας δημιουργεί ένα μη-διαλογικό φλοιό. Όταν το εκτελεί ένα σενάριο φλοιού, θέτει στην ειδική παράμετρο 0 το όνομα του αρχείου, αντί για το όνομα του φλοιού, και, αν υπάρχουν άλλα ορίσματα. τίθενται ως παράμετροι θέσης (positional parameters). Αλλιώς τέτοιοι παράμετροι δεν τίθενται.

Ένα σενάριο φλοιού μπορεί να γίνει εκτελέσιμο αν με την εντολή chmod μεταβληθεί η σχετική άδειε. Όταν το Bash βρει ένα τέτοιο αρχείο καθώς αναζητά μια εντολή μέσω της PATH, τότε διακλαδίζει ένα υπο-φλοιό που εκτελεί το αρχείο. Με άλλα λόγια η εκτέλεση του

filename ARGUMENTS

ισοδυναμεί με την εκτέλεση του

bash filename ARGUMENTS

αν το "filename" είναι ένα εκτελέσιμο σενάριο φλοιού. Ο υπο-φλοιός ξανα-αρχικοποιείται, ώστε στη πράξη είναι σαν να έχει κληθεί ένας νέο φλοιός για να διερμηνεύσει το σενάριο, με την εξαίρεση οτι οι διαδρομές των εντολών που είναι γνωστές στο φλοιό-γονέα (δες τεκμηρίωση hash) διατηρούνται και στο φλοιό-παιδί.

Οι περισσότερες εκδόσεις του UNIX περιλαμβάνουν τα παραπάνω στο μηχανισμό εκτέλεσης των εντολών του λειτουργικού συστήματος. Αν η πρώτη γραμμή του σεναρίου ξεκινά με τους δύο χαρακτήρες "#!", η υπόλοιπη γραμμή καθορίζει τη διαδρομή του διερμηνέα του σεναρίου. Έτσι μπορείτε να επιλέξετε κάποιο από τους διερμηνείς bash, awk, perl, python ή κάποιον άλλο και να γράψετε το υπόλοιπο σενάριο σε αυτή τη γλώσσα.

Τα ορίσματα προς τον διερμηνέα περιλαμβάνουν το όνομα του διερμηνέα, το όνομα του αρχείου σεναρίου, και στη συνέχεια τα υπόλοιπα ορίσματα της γραμμής κλήσης (αν υπάρχουν). Το Bash εκτελεί αυτές τις ενέργειες αν δεν καλύπτονται από το λειτουργικό σύστημα.

Τα σενάρια Bash συχνά ξεκινούν με

#! /bin/bash

(υποθέτοντας οτι το Bash έχει εγκατασταθεί στο /bin), διασφαλίζοντας έτσι οτι το σενάριο θα διερμηνευτεί από φλοιό Bashμ ακόμη και αν χρησιμοποιείται άλλος φλοιός.


7.2.5.2. Μερικά απλά παραδείγματα

Ένα πολύ απλό σενάριο, αποτελούμενο από μια μόνο εντολή, που λέει hello στο χρήστη:

[jerry@nowhere ~] cat hello.sh
#!/bin/bash
echo "Hello $USER"
      

Υπάρχει μόνο η εντολή echo, που χρησιμοποιεί την τιμή ($) της μεταβλητής περιβάλλοντος USER για να εμφανίσει το όνομα του χρήστη που εισάγει την ετολή.

Ένα άλλο σενάριο μιας γραμμής, που εμφανίζει τους συνδεδεμένους χρήστες:

#!/bin/bash
who | cut -d " " -f 1 | sort -u

Παρακάτω το σενάριο έχει περισσότερες γραμμές, και αντιγράφει τα αρχεία ενός καταλόγου. Το σενάριο πρώτα κάνει μια λίστα των αρχείων στον τρέχοντα κατάλογο η οποία τοποθετείται στη μεταβλητή LIST. Μετά καθορίζει το όνομα του αντιγράφου κάθε αρχείου, και αντιγράφει το αρχείο. Για κάθε αρχείο, εμφανίζεται ένα μήνυμα:

tille:~> cat bin/makebackupfiles.sh
#!/bin/bash
# make copies of all files in a directory
LIST=`ls`
for i in $LIST; do
        ORIG=$i
        DEST=$i.old
        cp $ORIG $DEST
        echo "copied $i"
done
      

Αν προσπαθήσετε κάτι σαν mv * *.old θα δείτε οτι δεν δουλεύει, προσπαθήστε το σε μερικά δοκιμαστικά αρχεία. Η εντολή echo προστίθεται για να εμφανίζεται στην οθόνη κάποια δραστηριότητα. Γενικά η echo είναι χρήσιμη ακόμη και αν ένα σενάριο δεν δουλέψει: βάλτε μια τέτοια εντολή μετά κάθε 'ύποπτη' γραμμή σεναρίου και θα βρείτε το πρόβλημα γρήγορα.

Ο κατάλογος /etc/rc.d/init.d περιέχει πολλά παραδείγματα. Ας δούμε ένα σενάριο που ελέγχει τον φανταστικό διακομιστή ICanSeeYou:

#!/bin/sh
# description: ICanSeeYou allows you to see networked people
# process name: ICanSeeYou
# pidfile: /var/run/ICanSeeYou/ICanSeeYou.pid
# config: /etc/ICanSeeYou.cfg
# Source function library.
. /etc/rc.d/init.d/functions
# See how (with which arguments) we were called.
case "$1" in
        start)
                echo -n "Starting ICanSeeYou: "
                daemon ICanSeeYou
                echo
                touch /var/lock/subsys/ICanSeeYou
                ;;
        stop)
                echo -n "Shutting down ICanSeeYou: "
                killproc ICanSeeYou
                echo
                rm -f /var/lock/subsys/ICanSeeYou
                rm -f /var/run/ICanSeeYou/ICanSeeYou.pid
                ;;
        status)
                status ICanSeeYou
                ;;
        restart)
                $0 stop
                $0 start
                ;;
        *)
                echo "Usage: $0 {start|stop|restart|status}"
                exit 1
esac
exit 0

Πρώτα, με την εντολή . (τελεία) φορτώνεται ένα σύνολο συναρτήσεων φλοιού, που χρησιμοποιούνται από σχεδόν όλα τα σενάρια φλοιού στο /etc/rc.d/init.d. Μετά εισάγεται μια εντολή case, που ορίζει 4 διαφορετικούς τρόπους εκτέλεσης του σεναρίου. Ένα παράδειγμα είναι το ICanSeeYou start. ίου, με την έκφραση $1.

Όταν το όρισμα δεν είναι συμβατό με τις επιλογές, εκτελείται η προκαθορισμένη περίπτωση, που σημειώνεται με αστερίσκο, και εμφανίζει μήνυμα σφάλματος. Η λίστα της εντολής case τελειώνει με την δήλωση esac. Στη περίπτωση start το πρόγραμμα διακομιστή ξεκινά σαν δαίμονας, λαμβάνοντας έναν αριθμό διεργασίας (process ID) και ένα κλείδωμα. Στη περίπτωση stop, η διεργασία του διακομιστή τερματίζεται, και διαγράφονται ο αριθμός διεργασίας και το κλείδωμα. Επιλογές όπως η daemon, και συναρτήσεις όπως η killproc, ορίζονται στο αρχείο /etc/rc.d/init.d/functions. Αυτές οι ρυθμίσεις είναι ειδικές για τη διανομή του συγκεκριμένου παραδείγματος. Στο δικό σας σύστημα μπορεί τα σενάρια αρχικοποίησης να ορίζουν άλλες συναρτήσεις και επιλογές, ή να μην ορίζουν καθόλου.

Με την επιτυχή εκτέλεση το σενάριο επιστρέφει κωδικό εξόδου 0, ενώ στο σφάλμα επιστρέφει 1.

Αυτό το σενάριο είναι ένα καλό παράδειγμα χρήσης συναρτήσεων, που κάνουν το σενάριο ευανάγνωστο και γρήγορο. Σημειώστε τη χρήση του sh αντί για το bash, ώστε το σενάριο να είναι χρήσιμο σε ευρύτερη γκάμα συστημάτων. Σ' ένα σύστημα Linux, η κλήση του bash ως sh έχει ως αποτέλεσμα την εκτέλεση του φλοιού σε μορφή POSIX-συμβατή.

Οι σελίδες τεκμηρίωσης του bash περιέχουν πληροφορίες για το συνδυασμό εντολών, τους βρόχους for- και while- και τις κανονικές εκφράσεις, καθώς και παραδείγματα. Ένας περιεκτικός οδηγός του Bash για προχωρημένους χρήστες και διαχειριστές συστημάτων, με ασκήσεις, διατίθεται από το συγγραφέα στο http://tille.xalasys.com/training/bash/. Λεπτομερής αναφορά στα χαρακτηριστικά του Bash και σε εφαρμογές στο εγχειρίδιο αναφοράς Advanced Bash Scripting.


7.3. Το γραφικό περιβάλλον

7.3.1. Εισαγωγή

Ο μέσος χρήστης μπορεί να μην ενδιαφέρεται ιδιαίτερα για τις ρυθμίσεις σύνδεσης, αλλά το Linux προσφέρει μια ευρεία ποικιλία εντυπωσιακών διαχειριστών παραθύρων και επιφάνειας εργασίας για χρήση του γραφικού περιβάλλοντος X. Η χρήση και η διαμόρφωση των διαχειριστών παραθύρων και επιφανειών εργασίας είναι απλή και μπορεί ακόμη και να μοιάζει με το τυποποιημένο περιβάλλον των MS Windows, MacIntosh ή UNIX CDE, αν και πολλοί χρήστες Linux προτιμούν τους πιο εντυπωσιακούς διαχειριστές παραθύρων και επιφάνειας εργασίας. Δεν θα συζητήσουμε τη συγκεκριμένη διαμόρφωση των χρηστών εδώ. Απλώς πειραματιστείτε και διαβάστε τη τεκμηρίωση μέσω της ενσωματωμένης Βοήθειας που παρέχουν αυτοί οι διαχειριστές και θα τα καταφέρετε.

Εντούτοις, θα ρίξουμε μια πιο κοντινή ματιά στο γραφικό περιβάλλον υποδομής Χ.


7.3.2. Το περιβάλλον παραθύρων X

Το σύστημα παραθύρων Χ είναι ένα διαφανές-στο-δίκτυο σύστημα παραθύρων που εκτελείται σε ένα ευρύ φάσμα των υπολογιστών. Οι διακομιστές του συστήματος παραθύρων Χ εκτελούνται σε υπολογιστές με δυαδική αναπαράσταση εικόνας (bitmap displays). Ο διακομιστής Χ διανέμει τις εισόδους των χρηστών και δέχεται αιτήματα εξόδου από διάφορα προγράμματα πελατών μέσω ποικίλων καναλιών δια-διεργασιακής επικοινωνίας. Αν και συνήθως τα προγράμματα πελατών εκτελούνται στον ίδιο υπολογιστή με τον διακομιστή, είναι δυνατό οι πελάτες να εκτελούντα διάφανα από άλλους υπολογιστές (συμπεριλαμβανομένων υπολογιστών με διαφορετικές αρχιτεκτονικές και λειτουργικά συστήματα). Θα μάθουμε πώς να το κάνουμε αυτό στο Κεφάλαιο 10 όπου συζητούμε σχετικά με τη δικτύωση και τις απομακρυσμένες εφαρμογές.

Το Χ υποστηρίζει την ιεραρχική επικάλυψη των υπο-παραθύρων και λειτουργιών κειμένου και γραφικών, σε μονόχρωμες και έγχρωμες οθόνες. ο αριθμός των προγραμμάτων-πελατών Χ, που χρησιμοποιούν τον διακομιστή Χ είναι αρκετά μεγάλος. Μερικά από τα προγράμματα που παρέχονται στον πυρήνα της διανομής του Χ Consortium είναι:

·         xterm: ένας εξομοιωτής τερματικού


Β·         twm: ένας μινιμαλιστικός διαχειριστής παραθύρων

Β·         xdm: ένας διαχειριστής απεικόνισης

Β·         xconsole: ένα πρόγραμμα επανα-κατεύθυνσηςκονσόλας

Β·         bitmap: ένας συντάκτης αρχέιων δυαδικής απεικόνισης (bitmap)

Β·         xauth, xhost and iceauth: προγράμματα ελέγχου πρόσβασης

Β·         xset, xmodmap και πολλά άλλα: προγράμματα ρύθυμισης προτιμήσεων χρήστη

Β·         xclock: ένα ρολόι

Β·         xlsfonts και άλλα: ένα πρόγραμμα απεικόνισης γραμματοσειρών, εργαλεία για την εμφάνιση πληροφοριών για γραμματοσειρές , παράθυρα και οθόνες

Β·         xfs: ένας διακομιστής γραμματοσειρών

Β·         ...

Αναφερόμαστε πάλι στις σελίδες τεκμηρίωσης αυτών των εντολών για αναλυτικές πληροφορίες. Περισσότερες εξηγήσεις στις διαθέσιμες λειτουργίες μπορούν να βρεθούν στο εγχειρίδιο Xlib - C language X Interface που έρχεται με τη διανομή Χ, την προδιαγραφή Πρωτοκόλλου Συστημάτων Παραθύρων Χ, και τα διάφορα εγχειρίδια και τη τεκμηρίωση των εργαλείων Χ. Ο κατάλογος /usr/share/doc περιέχει τις αναφορές σε αυτά τα έγγραφα και πολλά άλλα.

Πολλά άλλα εργαλεία, διαχειριστές παραθύρων, παιχνίδια, εργαλεία και παρελκόμενα συμπεριλαμβάνονται ως λογισμικό του χρήστη στη διανομή Χ Consortium, ή είναι διαθέσιμοι χρησιμοποιώντας το ανώνυμο FTP στο διαδίκτυο. Καλοί ιστοτόποι για αρχή είναι το http://www.x.org και το http://www.xfree.org.

Επιπλέον, όλες οι γραφικές εφαρμογές σας, όπως ο περιηγητής σας, το πρόγραμμα ηλεκτρονικού ταχυδρομείου σας, τα προγράμματα απεικόνισης εικόνας σας, τα προγράμματα αναπαραγωγής ήχου, είναι όλοι πελάτες στον διακομιστή Χ σας. Σημειώστε ότι σε κανονική λειτουργία, που είναι στη κατάσταση γραφικών, οι πελάτες Χ και ο διακομιστής Χ εκτελούνται στο Linux στον ίδιο υπολογιστή.


7.3.2.1. Ονόματα απεικονίσεων

Από την πλευρά του χρήστη, κάθε διακομιστής Χ έχει ένα όνομα απεικόνισης (display name) υπό μορφή

hostname:displaynumber.screennumber

Αυτές οι πληροφορίες χρησιμοποιούνται από την εφαρμογή για να καθοριστεί πώς πρέπει να συνδεθεί με τον διακομιστή Χ και ποια οθόνη πρέπει να χρησιμοποιήσουν εξ ορισμού (στις απεικονίσεις με πολλές οθόνες):

Β·         hostname: Το host name καθορίζει το όνομα του υπολογιστή-πελάτη με την οποία η απεικόνιση συνδέεται φυσικά. Εάν δεν δίνεται τέτοιο όνομα, θα χρησιμοποιηθεί ο αποδοτικότερος τρόπος σύνδεσης με έναν διακομιστή στον ίδιο υπολογιστή.

Β·         displaynumber: Η φράση "απεικόνιση" χρησιμοποιείται συνήθως για να αναφερθεί σε μια συλλογή οθονών που μοιράζονται κοινό πληκτρολόγιο, ποντίκι, κλπ. Οι σταθμοί εργασίας τείνουν να έχουν μόνο ένα πληκτρολόγιο, και επομένως, μόνο μια απεικόνιση. Τα μεγαλύτερα συστήματα πολλών χρηστών, εντούτοις, έχουν συχνά αρκετές απεικονίσεις έτσι ώστε περισσότεροι από ένας χρήστες μπορούν να εκτελούν εργασίες γραφικών ταυτόχρονα.. Προς αποφυγή σύγχυσης, για κάθε απεικόνιση σε ένα υπολογιστή ορίζεται ένας αριθμός οθόνης (αρχίζει από το 0). Ο αριθμός οθόνης πρέπει πάντα να δοθεί σε ένα όνομα οθόνης.

Β·         screennumber:Μερικές απεικονίσεις μοιράζονται ένα πληκτρολόγιο και ένα ποντίκι μεταξύ δύο ή περισσότερων οθονών. Δεδομένου ότι κάθε οθόνη έχει το σύνολο παραθύρων της, σε κάθε οθόνη ορίζεται ένας αριθμός οθόνης (αρχίζει από το 0). Εάν δεν δοθέι ο αριθμός οθόνης, θα χρησιμοποιηθεί η οθόνη 0.

Στα συστήματα POSIX, το προεπιλεγμένο όνομα απεικόνισης αποθηκεύεται στη μεταβλητή περιβάλλοντος DISPLAY. Αυτή η μεταβλητή ρυθμίζεται αυτόματα από τον εξομοιωτή τερματικού xterm. Εντούτοις, όταν συνδέεστε σε άλλο υπολογιστή σε ένα δίκτυο, μπορεί να χρειαστεί να ορίσετε την μεταβλητή DISPLAY μόνοι σας για να δείξει την οθόνη σας, δείτε την Ενότητα 10.4.3.2.

Περισσότερες πληροφορίες μπορούν να βρεθούν στη τεκμηρίωση του Χ.


7.3.2.2. Διαχειριστές παραθύρων και επιφάνειας εργασίας

Η διάταξη των παραθύρων στην οθόνη ελέγχεται από ειδικά προγράμματα αποκαλούμενα διαχειριστές παραθύρων (window managers). Αν και πολλοί διαχειριστές παραθύρων θα ακολουθήσουν τις προδιαγραφές γεωμετρίας όπως δίνονται, άλλες μπορεί να επιλέξουν να τις αγνοήσουν (απαιτώντας το χρήστη να ορίσει ρητά την περιοχή του παραθύρου στην οθόνη με το δείκτη, παραδείγματος χάριν).

Δεδομένου ότι οι διαχειριστές παραθύρων είναι κανονικά (αν και σύνθετα) προγράμματα-πελάτες, μπορούν να δημιουργηθούν ποικίλες διεπαφές χρήστη. Η διανομή Χ Consortium έχει έναν διαχειριστή παραθύρων που ονομάζεται twm, αλλά οι περισσότεροι χρήστες προτιμούν κάτι περισσότερη εντυπωσιακό όταν επιτρέπουν οι πόροι του συστήματος. Το Sawfish και το Enlightenment είναι δημοφιλή παραδείγματα που επιτρέπουν σε κάθε χρήστη να έχουν μια επιφάνεια εργασίας σύμφωνα με τη διάθεση και το ύφος του.

Ένας διαχειριστή επιφάνειας εργασίας χρησιμοποιεί έναν διαχειριστή παραθύρων για να τακτοποιήσει τη γραφική επιφάνεια εργασίας σας με έναν κατάλληλο τρόπο, με τα menu bars, τα drop-down menus, πληροφοριακά μηνύματα, ένα ρολόι, έναν διαχειριστή προγραμμάτων, ένα διαχειριστή αρχείων κλπ. Μεταξύ των δημοφιλέστερων διαχειριστών επιφάνειας εργασίας είναι το Gnome και το KDE, τα οποία εκτελούνται σχεδόν σε οποιαδήποτε διανομή Linux και πολλά άλλα συστήματα UNIX.

Tip

Εφαρμογές KDE στο Gnome/Εφαρμογές Gnome στο KDE

 

Δεν χρειάζεται να ξεκινήσετε την επιφάνεια εργασίας σας με KDE προκειμένου να είστε σε θέση να εκτελέσετε εφαρμογές KDE. Εάν έχετε εγκεταστημένες τις βιβλιοθήκες KDE (το πακέτο kdelibs), μπορείτε να εκτελέσετε αυτές τις εφαρμογές από τα menus του Gnome ή να τις ξεκινήσετε από ένα τερματικό Gnome.

Η εκτέλεση εφαρμογών Gnome σε περιβάλλον KDE είναι λίγο πιο δύσκολη, επειδή δεν υπάρχει κανένα μοναδικό σύνολο βασικών βιβλιοθηκών στο Gnome. Εντούτοις, οι εξαρτήσεις, και επομένως τα πρόσθετα πακέτα που μπορεί να πρέπει να εγκαταστήσετε θα ξεκαθαρίσουν στην εκτέλεση ή εγκατάσταση μιας τέτοιας εφαρμογής.


7.3.3. Διαμόρφωση διακομιστή X

Η διανομή Χ που ερχόταν με το Linux, η Xfree86, χρησιμοποιεί το αρχείο διαμόρφωσης XF86Config για την αρχική της ρύθμιση. Αυτό το αρχείο διαμορφώνει την κάρτα γραφικών σας και αναζητείται σε διάφορες θέσεις, αν και είναι συνήθως στο /etc/X11.

Εάν βλέπετε ότι το αρχείο /etc/X11/XF86Config βρίσκεται στο σύστημά σας, τότε μια πλήρης περιγραφή μπορεί να βρεθεί στις σελίδες τεκμηρίωσης XF86Config.

Λόγω ζητημάτων αδειοδότησης του XFree86, τα νεώτερα συστήματα έρχονται συνήθως με τη διανομή X.Org του διακομιστή και των εργαλείων Χ. Το κύριο αρχείο διαμόρφωσης εδώ είναι το xorg.conf, που επίσης βρίσκεται συνήθως στοin /etc/X11. Το αρχείο αποτελείται από διάφορα τμήματα που μπορούν να εμφανιστούν σε οποιαδήποτε διάταξη. Τα τμήματα περιέχουν τις πληροφορίες για την οθόνη σας, την κάρτα γραφικών σας, τη διαμόρφωση οθόνης, το πληκτρολόγιό σας κλπ. Ως χρήστης, δεν χρειάζεστε να ανησυχείτε πάρα πολύ για αυτό που είναι μέσα στο αρχείο, δεδομένου ότι κανονικά όλα καθορίζονται όταν το εγκαθίσταται σύστημα.

Εάν όμως πρέπει να αλλάξετε τις επιλογές διακομιστή γραφικών, εντούτοις, μπορείτε να τρέξετε τα εργαλεία διαμόρφωσης ή να επεξεργαστείτε τα αρχεία διαμόρφωσης που ρυθμίζουν την υποδομή χρήσης του διακομιστή X. Δείτε τη τεκμηρίωση για περισσότερες πληροφορίες, η διανομή σας έχει τα δικά της εργαλεία. Δεδομένου ότι το λάθος διαμόρφωση μπορεί να οδηγήσει σε ακατανόητο γραφικό περιβάλλον, μπορείτε να θελήσετε να κάνετε ένα εφεδρικό αντίγραφο του αρχείου διαμόρφωσης πριν προσπαθήσετε να αλλάξετε, για να είστε ασφαλείς.


7.4. Τοπικές ρυθμίσεις

7.4.1. Ρύθμιση πληκτρολογίου

Στη κατάσταση κειμένου, η ρύθμιση της διάταξης του πληκτρολογίου γίνεται χρησιμοποιώντας την εντολή loadkeys. Στο γραφικό περιβάλλον, χρησιμοποιήστε το τοπικό εργαλείο διαμόρφωσης Χ ή επεξεργαστείτε το τμήμα Keyboard στο XF86Config με το χέρι. Το XkbdLayout είναι αυτό που θέλετε να ρυθμίσετε:

XkbLayout       "us"

Αυτή είναι η προεπιλογή. Αλλάξτε στις τοπικές σας ρυθμίσεις με την αντικατάσταση της αναφερόμενης τιμής σε εισαγωγικά με οποιαδήποτε από τα ονόματα που απαριθμούνται στους υπο-καταλόγους του καταλόγου keymaps. Εάν δεν μπορείτε να βρείτε το keymaps, προσπαθήστε να εντοπίσετε τη θέση του στο σύστημά σας χρησιμοποιώντας την εντολή

locate keymaps

Είναι δυνατό να συνδυαστούν οι ρυθμίσεις διάταξης πληκτρολογίου, όπως σε αυτό το παράδειγμα:

Xkblayout      "us,ru"

Κάντε ένα εφεδρικό αντίγραφο του αρχείου /etc/X11/XF86Config πριν το επεξεργαστείτε! Θα χρειαστεί να χρησιμοποιήσετε τον λογαριασμό root για να το κάνετε αυτό.

Αποσυνδεθείτε και επανασυνδεθείτε προκειμένου να ξανα-φορτωθούν οι ρυθμίσεις Χ.

Το Gnome Keyboard Applet υποστηρίζει εναλλαγή ανάμεσα σε διατάξεις πληκτρολογίου σε πραγματικό χρόνο. Δεν απαιτείται καμία πρόσθετη άδεια για τη χρησιμοποίηση αυτού του προγράμματος. Το KDE έχει ένα παρόμοιο εργαλείο για εναλλαγή μεταξύ των διατάξεων πληκτρολογίου.


7.4.2. Γραμματοσειρές

Στη κατάσταση κειμένου, χρησιμοποιήστε το εργαλείο setfont για να φορτώσετε τις γραμματοσειρές. Τα περισσότερα συστήματα έχουν ένα τυποποιημένο αρχείο inputrc που επιτρέπει το συνδυασμό των χαρακτήρων, όπως το γαλλικό "é" (meta characters). Ο διαχειριστής του συστήματος πρέπει έπειτα να προσθέσει τη γραμμή

export INPUTRC="/etc/inputrc"

στο αρχείο /etc/bashrc.


7.4.3. Ζώνη ημερομηνίας και ώρας

Οι ρυθμίσεις ώρας και ημερομηνίας γίνονται συνήθως κατά την εγκατάσταση. Μετά από αυτό, το σύστημα διατηρείται ενήμερο χρησιμοποιώντας έναν πελάτη NTP (Network Time Protocol). Τα περισσότερα συστήματα Linux τρέχουν ntpd εξ ορισμού:

debby:~> ps -ef | grep ntpd
ntp      24678     1  0  2002 ?        00:00:33 ntpd -U ntp
      

Μπορείτε να εκτελέσετε το ntpdate με το χέρι για να θέσετε το χρόνο, με την προϋπόθεση ότι μπορείτε να προσεγγίσετε σε έναν διακομιστή χρόνου. Ο δαίμονας ntpd δεν πρέπει να εκτελείται την ώρα που εσείς ρυθμίζετε τον χρόνο χρησιμοποιώντας το ntpdate. Χρησιμοποιήστε έναν διακομιστή χρόνου ως όρισμα στην εντολή:

root@box:~# ntpdate 10.2.5.200
26 Oct 14:35:42 ntpdate[20364]: adjust time server 10.2.5.200 offset
 -0.008049 sec
      

Δείτε το εγχειρίδιο του συστήματος και τη τεκμηρίωση του πακέτου NTP. Οι περισσότεροι διαχειριστές επιφάνειας εργασίας περιλαμβάνουν εργαλεία για ρύθμιση ώρας και ημερομηνίας, υπό τον όρο ότι έχετε πρόσβαση στον λογαριασμό του διαχειριστή του συστήματος.

Για τον καθορισμό της σωστής χρονικής ζώνης, μπορείτε να χρησιμοποιήσετε τις εντολές tzconfig ή timezone. Οι πληροφορίες χρονικής ζώνης ρυθμίζονται συνήθως κατά τη διάρκεια της εγκατάστασης του υπολογιστή σας. Πολλά συστήματα έχουν συγκεκριμένα εργαλεία σε κάθε διανομή για τη ρύθμισή της, δείτε τη τεκμηρίωση του συστήματός σας.


7.4.4. Γλώσσα

Εάν προτιμάτε να λαμβάνετε τα μηνύματα του συστήματος στα ολλανδικά ή γαλλικά, μπορείτε να θέσετε τις μεταβλητές περιβάλλοντος LANG και LANGUAGE επιτρέποντας την υποστήριξη της επιθυμητής τοπικής γλώσσας και τελικά τις γραμματοσειρές και τους χαρακτήρες αυτής της γλώσσας.

Με τα περισσότερα γραφικά συστήματα σύνδεσης, όπως το gdm ή το kdm, έχετε τη δυνατότητα να διαμορφώσετε αυτές τις γλωσσικές ρυθμίσεις κατά τη σύνδεση.

Σημειώστε ότι στα περισσότερα συστήματα, η προεπιλογή, τείνει να είναι το en_US.UTF-8. Αυτό δεν είναι ένα πρόβλημα, επειδή τα συστήματα όπου αυτό είναι η προεπιλογή, θα έχουν επίσης όλα τα προγράμματα που υποστηρίζουν αυτήν την κωδικοποίηση. Κατά συνέπεια, το vi να μπορεί να επεξεργαστεί όλα τα αρχεία του συστήματός σας, το cat δεν θα συμπεριφερθεί περίεργα κλπ.

Το πρόβλημα αρχίζει όταν συνδέεστε με ένα παλαιότερο σύστημα που δεν υποστηρίζει αυτήν την κωδικοποίηση γραμματοσειρών, ή όταν ανοίγετε ένα αρχείο κωδικοποιημένο με UTF-8 σε ένα σύστημα που υποστηρίζει μόνο τις γραμματοσειρές με χαρακτήρες 1-byte. Το εργαλείο recode μπορεί να φανεί πρακτικό για να μετατρέψει τα αρχεία από ένα σύνολο χαρακτήρων σε ένα άλλο. Διαβάστε τις σελίδες εγχειριδίου για μια επισκόπηση των χαρακτηριστικών και της χρήσης. Μια άλλη δυνατή λύση είναι να εργαστείτε προσωρινά με μια άλλη κωδικοποίηση, με τον καθορισμό της μεταβλητής περιβάλλοντος LANG:

debby:~> acroread /var/tmp/51434s.pdf
Warning: charset "UTF-8" not supported, using "ISO8859-1".
Aborted

debby:~> set | grep UTF
LANG=en_US.UTF-8

debby:~> export LANG=en_US

debby:~> acroread /var/tmp/51434s.pdf
<--new window opens-->
      

Αναφερθείτε στον ιστοτόπο Mozilla για οδηγίες αλλαγής γλώσσας στο Firefox. Ο ιστοτόπος OpenOffice.org έχει πληροφορίες για την τοπικοποίηση του πακέτου OpenOffice.org.


7.4.5. Πληροφορίες για συγκεκριμένες χώρες

Η λίστα HOWTOs περιέχει αναφορές για διάφορες γλώσσες.


7.5. Εγκατάσταση νέου λογισμικού

7.5.1. Γενικά

Οι περισσότεροι άνθρωποι είναι έκπληκτοι όταν δουν ότι έχουν ένα πλήρως λειτουργικό υπολογιστή, μετά την εγκατάσταση του Linux. Οι περισσότερες διανομές περιέχουν πλήρη υποστήριξη για κάρτες γραφικών και δικτύων, οθόνες και άλλες εξωτερικές συσκευές, έτσι δεν υπάρχει συνήθως καμία ανάγκη να εγκατασταθούν οι πρόσθετοι οδηγοί συσκευών. Επίσης, τα κοινά εργαλεία όπως τα πακέτα αυτοματισμού γραφείου, οι περιηγητές ιστού, τα προγράμματα ηλεκτρονικού ταχυδρομείου και άλλα, συμπεριλαμβάνονται στις κύριες διανομές. Ακόμα κι έτσι, μια αρχική εγκατάσταση μπορεί να μην καλύψει τις απαιτήσεις σας.

Εάν δεν μπορείτε να βρείτε ακριβώς αυτό που χρειάζεστε, ίσως δεν είναι εγκαταστημένο στο σύστημά σας. Μπορεί επίσης να έχετε το απαραίτητο λογισμικό, αλλά δεν κάνει αυτό που υποτίθεται ότι θα έκανε. Θυμηθείτε ότι το Linux κινείται γρήγορα, και το λογισμικό βελτιώνεται σε καθημερινή βάση. Μην σπαταλήστε το χρόνο σας προσπαθώντας να ανιχνεύσετε σφάλματα που πιθανόν να έχουν ήδη επιλυθεί.

Μπορείτε να ενημερώσετε το σύστημά σας ή να προσθέσετε πακέτα σε αυτό οποιαδήποτε στιγμή θέλετε. Το μεγαλύτερο μέρος του λογισμικού έρχεται σε πακέτα. Πρόσθετο λογισμικό μπορεί να βρεθεί στα CD εγκαταστάσεών σας ή στο Διαδίκτυο. Ο ιστοτόπος της διανομής σας Linux είναι μια καλή θέση για να αρχίσετε να ψάχνετε πρόσθετο λογισμικό και περιέχει τις οδηγίες για το πώς να το εγκαταστήσετε στο Linux σας, δείτε το Παράρτημα Α. Πάντα διαβάζετε τη τεκμηρίωση που έρχεται μαζί με το νέο λογισμικό, και οποιεσδήποτε οδηγίες εγκατάστασης που μπορεί να περιέχει το πακέτο. Όλα τα λογισμικά έρχονται με ένα αρχείο README, το οποίο σας προτείνουμε ένθερμα να διαβάσετε.


7.5.2. Μορφές πακέτων

7.5.2.1. Πακέτα RPM

7.5.2.1.1. Τι είναι RPM;

Το RPM (RedHat Package Manager, Διαχειριστής Πακέτων RedHat), είναι ισχυρός διαχειριστής πακέτων που μπορείτε να χρησιμοποιήσετε για να εγκαταστήσετε, να ενημερώσετε και να αφαιρέσετε πακέτα. Σας επιτρέπει να ψάξετε για πακέτα και κρατά λογαριασμό των αρχείων που έρχονται με κάθε πακέτο. Έχειε νσωματωμένο ένα σύστημα με το οποίο μπορείτε να ελέγξετε την αυθεντικότητα των πακέτων που μεταφορτώσατε από το Διαδίκτυο. Οι προχωρημένοι χρήστες μπορούν να δημιουργήσουν τα δικά τους πακέτα με το RPM.

Ένα πακέτο RPM αποτελείται από μια συλλογή αρχείων και μετα-δεδομένων(meta-data) που χρησιμοποιούνται για να εγκαταστήσουν και να διαγράψουν τη συλλογή των αρχείων. Τα μετα-δεδομένα περιλαμβάνουν τα βοηθητικά σενάρια, τις ιδιότητες αρχείων, και τις περιγραφικές πληροφορίες για το πακέτο. Τα πακέτα έρχονται σε δύο ποικιλίες: δυαδικά πακέτα, που χρησιμοποιούνται για να τοποθετήσουν το λογισμικό πρόκειται να εγκατασταθεί, και τα πακέτα πηγαίου κώδικα, που περιέχουν τον πηγαίο κώδικα και τις οδηγίες που είναι απαραίτητες για να παραχθεί το δυαδικό πακέτο.

Πολλές άλλες δημοφιλείς διανομές υποστηρίζουν πακέτα RPM, που μεταξύ αυτών είναι το RedHat Enterprise Linux, το Mandriva (πρώην Mandrake), το Fedora Core και το SuSE Linux. Εκτός από τις συμβουλές για τη διανομή σας, μπορείτε να διαβάσετε το man rpm.


7.5.2.1.2. Παραδείγματα RPM

Οι περισσότερες συσκευασίες εγκαθίστανται απλά με την επιλογή αναβάθμισης (upgrade), -U, ανεξάρτητα αν το πακέτο είναι ήδη εγκαταστημένο ή όχι. Το πακέτο RPM περιέχει μια πλήρη έκδοση του προγράμματος, το οποίο επικαλύπτει τις υπάρχουσες εκδόσεις ή εγκαθίσταται ως νέο πακέτο. Η τυπική χρήση είναι η ακόλουθη:

rpm -Uvh /path/to/rpm-package(s)

Η επιλογή -v δημιουργεί λεκτική έξοδο για καλύτερη παρακολούθηση, και η -h κάνει το rpm να εμφανίζει τη μπάρα προόδου:

[root@jupiter tmp]# rpm -Uvh totem-0.99.5-1.fr.i386.rpm
Preparing...                ########################################### [100%]
   1:totem                  ########################################### [100%]
[root@jupiter tmp]#
      

Τα νέα πακέτα πυρήνων, εντούτοις, εγκαθίστανται με την επιλογή -i, που δεν επικαλύπτει την υπάρχουσα έκδοση. Με αυτό τον τρόπο, θα είστε ακόμα σε θέση να ξεκιν'ήσετε το σύστημά σας με τον παλαιό πυρήνα εάν ο νέος δεν λειτουργεί.

Μπορείτε επίσης να χρησιμοποιήσετε το rpm για να ελέγξετε εάν ένα πακέτο είναι εγκαταστημένο στο σύστημά σας:

[david@jupiter ~] rpm -qa | grep vim
vim-minimal-6.1-29
vim-X11-6.1-29
vim-enhanced-6.1-29
vim-common-6.1-29
      

Ή μπορείτε να βρείτε ποιο πακέτο περιέχει ένα συγκεκριμένο αρχείο ή εκτελέσιμο:

[david@jupiter ~] rpm -qf /etc/profile
setup-2.5.25-1

[david@jupiter ~] which cat
cat is /bin/cat

[david@jupiter ~] rpm -qf /bin/cat
coreutils-4.5.3-19
      

Σημειώστε ότι δεν χρειάζεστε να έχετε πρόσβαση στα προνόμια διαχειριστή προκειμένου να χρησιμοποιήσετε το rpm για να ρωτήσετε τη βάση δεδομένων RPM. Πρέπει μόνο να είστε root κατά την προσθήκη, τη τροποποίηση ή τη διαγραφή των πακέτων.

Παρακάτω είναι ένα τελευταίο παράδειγμα, που καταδεικνύει πώς να απεγκαταστήσετε ένα πακέτο χρησιμοποιώντας το rpm:

[root@jupiter root]# rpm -e totem
[root@jupiter root]#
      

Σημειώστε ότι η απεγκατάσταση δεν είναι τόσο φλύαρη εξ ορισμού, είναι κανονικό ότι δεν βλέπετε πολλά να συμβαίνουν. Σε περίπτωση αμφιβολίας, χρησιμοποιήστε πάλι το rpm -qa για να ελέγξετε ότι η συσκευασία έχει αφαιρεθεί.

Το RPM μπορεί να κάνει πολύ περισσότερα από τις βασικές λειτουργίες που συζητήσαμε σε αυτήν την εισαγωγή. Το RPM HOWTO περιέχει τις περαιτέρω αναφορές


7.5.2.2. Πακέτα DEB (.deb)

7.5.2.2.1. Τι είναι τα πακέτα Debian;

Αυτή η μορφή πακέτων είναι η προεπιλογή σε Debian GNU/Linux, όπου το dselect, και, σήμερα το πιό κοινό aptitude, είναι το τυποποιημένο εργαλείο για τα πακέτα. Χρησιμοποιείται για να επιλέξει τα πακέτα που θέλετε να εγκαταστήσετε ή να αναβαθμίσετε, αλλά θα εκτελεστεί επίσης κατά τη διάρκεια της εγκατάστασης ενός συστήματος Debian και θα σας βοηθήσει για να καθορίσει τη μέθοδο προσπέλασης για να χρησιμοποιήσει, για να απαριθμήσει τα διαθέσιμα πακέτα και για να ρυθμίσει τα πακέτα.

Ο ιστοτόπος Debian περιέχει όλες τις πληροφορίες που χρειάζεστε, συμπεριλαμβανομένου ενός "dselect Documentation για Αρχάριους".

Σύμφωνα με τις πιό πρόσφατες ειδήσεις, η μορφή πακέτων Debian γίνεται όλο και περισσότερο δημοφιλής. Κατά την διάρκεια αυτής της συγγραφής, 5 των 10 κορυφαίων διανομών το χρησιμοποιούν (Το ίδιο ισχύει και για το Ubuntu, ΣτΜ.). Επίσης το apt-get (δείτε την Ενότητα 7.5.3.2) γίνεται εξαιρετικά δημοφιλής, επίσης στα συστήματα μη-DEB.


7.5.2.2.2. Παραδείγματα με εργαλεία DEB

Ο έλεγχος εάν ένα πακέτο είναι εγκαταστημένο γίνεται με την εντολή dpkg. Για παράδειγμα, εάν θέλετε να ξέρετε ποια έκδοση του λογισμικού Gallery είναι εγκαταστημένη στον υπολογιστή σας:

nghtwsh@gorefest:~$ dpkg -l *gallery*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name           Version        Description
+++-==============-==============-============================================
ii  gallery        1.5-1sarge2    a web-based photo album written in php
      

Το πρόθεμα "ii" σημαίνει ότι το πακέτο είναι εγκαταστημένο. Εάν δείτε το "un" ως πρόθεμα, το οποίο σημαίνει ότι το πακέτο είναι γνωστό στον κατάλογο που κρατά ο υπολογιστής σας, αλλά δεν είναι εγκαταστημένο.

Η εύρεση σε ποιο πακέτο ανήκει ένα αρχείο γίνεται με τη χρησιμοποίηση της επιλογής -S στην εντολή dpkg:

nghtwsh@gorefest:~$ dpkg -S /bin/cat
coreutils: /bin/cat
      

Περισσότερες πληροφορίες στις σελίδες τεκμηρίωσης dpkg.


7.5.2.3. Πακέτα πηγαίου κώδικα

Το μεγαλύτερο μέρος των προγραμμάτων Linux είναι Ελεύθερο/Ανοικτό Λογισμικό, έτσι τα πακέτα πηγαίου κώδικα είναι διαθέσιμα για αυτά τα προγράμματα. Τα αρχεία πηγαίου κώδικα απαιτούνται για τη μεταγλώττιση της δική σας έκδοσης του προγράμματός. Ο πηγαίος κώδικας για ένα πρόγραμμα μπορεί να μεταφορτωθεί από τον ιστοτόπο του, συχνά ως συμπιεσμένο tarball (program-version.tar.gz ή παρόμοιο). Για τις βασισμένες στο RPM διανομές, ο πηγαίος κώδικας παρέχεται συχνά στο program-version.src.rpm. Το Debian, και οι περισσότερες διανομές βασισμένες σε αυτό, παρέχουν τον προσαρμοσμένο πηγαίο κώδικα με το apt-get source.

Οι συγκεκριμένες απαιτήσεις, οι εξαρτήσεις και οι οδηγίες εγκαταστάσεων παρέχονται στο αρχείο README. Θα χρειαστείτε πιθανώς ένα μεταγλωττιστή C, την gcc. Αυτός ο μεταγλωττιστής GNU C συμπεριλαμβάνεται στα περισσότερα συστήματα Linux και είναι σε πολλές άλλες πλατφόρμες.


7.5.3. Αυτόματη διαχείριση πακέτων και ενημερώσεων

7.5.3.1. Γενικά σχόλια

Το πρώτο πράγμα που κάνετε μετά την εγκατάσταση ενός νέου συστήματος είναι να εφαρμόσετε τις ενημερώσεις. Αυτό ισχύει για όλα τα λειτουργικά συστήματα και το Linux δεν είναι διαφορετικό.

Οι ενημερώσεις για τα περισσότερα συστήματα Linux μπορούν συνήθως να βρεθούν σε ένα κοντινό ιστοτόπο, κατοπτρικό (mirror) της διανομής σας. Οι κατάλογοι ιστοτόπων που προσφέρουν αυτήν την υπηρεσία μπορούν να βρεθούν στον ιστοτόπο της διανομής σας, δείτε το Παράρτημα Α.

Οι ενημερώσεις πρέπει να εφαρμόζονται τακτικά, καθημερινά αν είναι δυνατό - αλλά ανά δυο βδομάδες θα ήταν μια λογική πρόταση. Πρέπει πραγματικά να προσπαθήσετε να έχετε την πιό πρόσφατη έκδοση της διανομής σας, δεδομένου ότι το Linux αλλάζει συνεχώς. Όπως είπαμε πριν, νέα χαρακτηριστικά, οι βελτιώσεις και οι διορθώσεις σφαλμάτων παρέχονται σε έναν σταθερό ρυθμό, και μερικές φορές επιλύονται σημαντικά προβλήματα ασφάλειας.

Οι καλές ειδήσεις είναι ότι οι περισσότερες διανομές Linux παρέχουν τα εργαλεία έτσι ώστε να μην είναι απαραίτητο να αναβαθμίσετε τις δεκάδες των πακέτων καθημερινά με το χέρι. Οι ενότητες που ακολουθούν δίνουν μια επισκόπηση των διαχειριστών των διαχειριστών πακέτων. Υπάρχουν πολλά περισσότερα σε αυτό το θέμα, ακόμη και οι τακτικές ενημερώσεις των πακέτων πηγαίου κώδικα μπορούν να αυτοματοποιηθούν. Απαριθμούμε μόνο τα πιο γνωστά συστήματα. Πάντα να αναφέρεστε στη τεκμηρίωση της διανομής σας για τις προτεινόμενες διαδικασίες.


7.5.3.2. APT

Το Προηγμένο Εργαλείο Πακέτων (Advanced Package Tool) είναι ένα σύστημα διαχείρισης πακέτων λογισμικού. Το εργαλείο γραμμής εντολών για τα πακέτα είναι apt-get, το οποίο παρέχει μια άριστη σελίδα τεκμηρίωσης που περιγράφει πως να εγκαταστήσετε και να ενημερώσετε πακέτα και πώς να αναβαθμίσετε τα επιμέρους πακέτα ή ολόκληρη τη διανομή σας. Το APT έχει τις ρίζες του στη διανομή Debian GNU/Linux, όπου είναι προεπιλεγμένος διαχειριστής για τις συσκευασίες Debian. Το APT επίσης συνεργάζεται και με τα πακέτα RPM. Το κύριο πλεονέκτημα του APT είναι ότι είναι ελεύθερο και εύκολο στη χρήση. Θα σας επιτρέψει να οργανώσετε συστήματα σύμφωνα με συγκεκριμένες (και σε μερικές περιπτώσεις εμπορικές) διανομές που απαριθμούνται στις επόμενες παραγράφους.

Γενικά, όταν χρησιμοποιείται για πρώτη φορά το apt-get, θα πρέπει να μεταφορτώσετε έναν κατάλογο των διαθέσιμων συσκευασιών. Αυτό γίνεται χρησιμοποιώντας την εντολή

apt-get update

Μετά από αυτό, μπορείτε να χρησιμοποιήσετε το apt-get για να αναβαθμίσετε το σύστημά σας:

apt-get upgrade

Αυτό κάντε το συχνά, είναι ένας εύκολος τρόπος να κρατάτε το σύστημά σας ενημερωμένο και ασφαλές.

Εκτός από αυτήν την γενική χρήση, το apt-get είναι επίσης πολύ γρήγορο για την εγκατάσταση μεμονωμένων συσκευασιών. Έτσι λειτουργεί:

[david@jupiter ~] su - -c "apt-get install xsnow"
Password:
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
  xsnow
0 packages upgraded, 1 newly installed, 0 removed and 3 not upgraded.
Need to get 33.6kB of archives.
After unpacking 104kB of additional disk space will be used.
Get:1 http://ayo.freshrpms.net redhat/9/i386/os xsnow 1.42-10 [33.6kB]
Fetched 33.6kB in 0s (106kB/s)
Executing RPM (-Uvh)...
Preparing...                ########################################### [100%]
   1:xsnow                  ########################################### [100%]
      

Σημειώστε την επιλογή -c στην εντολή su, που υποδεικνύει στο κέλυφος υπερ-χρήστη να εκτελέσει μόνο αυτήν την εντολή, και μετά επιστρέψει στο περιβάλλον του χρήστη. Με αυτόν το τρόπο, δεν μπορείτε να ξεχάσετε να εγκαταλείψετε τον λογαριασμό υπερ-χρήστη (Στο Ubuntu, δείτε τη χρήση του sudo, ΣτΜ.).

Εάν υπάρχουν οποιεσδήποτε εξαρτήσεις σε άλλα πακέτα, το apt-get θα μεταφορτώσει και θα εγκαταστήσει αυτά τα υποστηρικτικά πακέτα. (To aptitude είναι ένα ολοκληρωμένο περιβάλλον διαχείρισης με διεπαφή κειμένου. ΣτΜ.)

Περισσότερες πληροφορίες μπορούν να βρεθούν στο APT HOWTO.


7.5.3.3. Συστήματα που χρησιμοποιούν πακέτα RPM

Ο Update Agent, που αρχικά υποστήριζε μόνο τα πακέτα RPM RedHat, υποστηρίζει τώρα ένα ευρύτερο σύνολο λογισμικού, συμπεριλαμβανομένων των αποθηκών μη-RedHat. Αυτό το εργαλείο παρέχει ένα πλήρες σύστημα για την ενημέρωση πακέτων RPM στα συστήματα RedHat ή Fedora Core. Στη γραμμή εντολής, πληκτρολογήστε up2date για να ενημερώσετε το σύστημά σας. Στην επιφάνεια εργασίας, εξ ορισμού ενεργοποιείται μια μικρή εικόνα, λέγοντάς σας εάν υπάρχουν ή όχι διαθέσιμες ενημερώσεις για το σύστημά σας.

Yellowdog's Updater Modified (yum) είναι ένα άλλο εργαλείο που έγινε πρόσφατα δημοφιλές. Είναι ένα διαλογικό αλλά αυτοματοποιημένο πρόγραμμα για εγκατάσταση, ενημέρωση ή απεγκατάσταση(αφαίρεση) πακέτων RPM σε ένα σύστημα. Είναι το εργαλείο της επιλογής στα συστήματα Fedora.

Στο SuSE Linux, όλα γίνονται με το YaST, Ακόμη ένα Εργαλείο Ρύθμισης (Yet another Setup Tool), το οποίο υποστηρίζει μια ευρεία ποικιλία εργασιών διαχείρισης συστημάτων, μεταξύ των οποίων είναι η ενημέρωση πακέτων RPM. Αρχίζοντας από to SuSE Linux 7.1 μπορείτε επίσης να αναβαθμίσετε χρησιμοποιώντας μιας διεπαφή Ιστού και το YOU, Yast Online Upgrade.

Το Mandrake Linux και το Mandriva παρέχουν τα αποκαλούμενα URPMI εργαλεία, ένα σύνολο προγραμμάτων περιτυλίγματος που κάνουν την εγκατάσταση του νέου λογισμικού ευκολότερο για το χρήστη. Αυτά τα εργαλεία συνδυάζονται με το RPMDrake και MandrakeUpdate για να παρέχουν όλα όσα απαιτούνται για ομαλή εγκατάσταση και απεγκατάσταση των πακέτων λογισμικού. Το MandrakeOnline προσφέρει μια εκτεταμένη σειρά υπηρεσιών και μπορεί αυτόματα να ειδοποιήσει τους διαχειριστές πότε οι υπάρχουν διαθέσιμες ενημερώσεις για το δικό σας σύστημα Mandrake. Δείτε το man urpmi, μεταξύ άλλων, για περισσότερες πληροφορίες.

Επίσης οι διαχειριστές επιφάνειας εργασίας KDE και Gnome έχουν τις δικές τους (γραφικές) εκδόσεις διαχειριστών πακέτων.


7.5.4. Αναβάθμιση του πυρήνα

Οι περισσότερες εγκαταστάσεις Linux είναι καλές εάν αναβαθμίζετε περιοδικά τη διανομή σας. Η διαδικασία αναβάθμισης θα εγκαταστήσει έναν νέο πυρήνα όταν απαιτείται και θα κάνει όλες τις απαραίτητες αλλαγές στο σύστημά σας. Πρέπει μόνο να μεταγλωττίσετε ή να εγκαταστήσετε έναν νέο πυρήνα με το χέρι εάν χρειάζεστε τα χαρακτηριστικά γνωρίσματα πυρήνων που δεν υποστηρίζονται από τον προεπιλεγμένο πυρήνα που περιλαμβάνεται στη διανομή Linux σας.

Είτε συντάσσοντας το δικό σας βελτιστοποιημένο πυρήνα είτε χρησιμοποιώντας μια προ-μεταγλωττισμένο πακέτο πυρήνων, εγκαταστήστε το σε συνύπαρξη με τον παλαιό πυρήνα έως ότου είστε βέβαιοι ότι όλα λειτουργούν σύμφωνα με το σχέδιο.

Κατόπιν δημιουργήστε ένα σύστημα διπλής εκκίνησης, που θα σας επιτρέψει να επιλέξετε με ποιον πυρήνα θέλετε να εκκινίσει το σύστημα, με την ενημέρωση του αρχείου grub.conf (αρχείο διαμόρφωσης boot loader) (Στο Ubuntu είναι το αρχείο /boot/grub/menu.lst, ΣτΜ). Αυτό είναι ένα απλό παράδειγμα:

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making config changes. 
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, e.g.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/hde8
#          initrd /initrd-version.img
#boot=/dev/hde
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux new (2.4.9-31)
        root (hd0,0)
        kernel /vmlinuz-2.4.9-31 ro root=/dev/hde8
        initrd /initrd-2.4.9-31.img
title old-kernel
        root (hd0,0)
        kernel /vmlinuz-2.4.9-21 ro root=/dev/hde8
        initrd /initrd-2.4.9-21.img

Αφότου ο νέος πυρήνας έχει αποδείξει ότι λειτουργεί κανονικά, μπορείτε να αφαιρέσετε τις γραμμές για την παλαιά από το αρχείο ρυθμίσεων GRUB, αν και είναι καλύτερο να περιμένετε μερικές ημέρες για να είστε εντελώς βέβαιοι.


7.5.5. Εγκατάσταση επιπλέον πακέτων από τα CD εγκατάστασης

7.5.5.1. Προσάρτηση του CD

Αυτό βασικά γίνεται με τον ίδιο τρόπο όπως η χειροκίνητη εγκατάσταση πακέτων, εκτός από το ότι πρέπει να προσαρτήσετε το σύστημα αρχείων του CD στο σύστημα αρχείων του υπολογιστή σας για να το καταστήσετε προσπελάσιμο. Στα περισσότερα συστήματα, αυτό θα γίνει αυτόματα κατά την εισαγωγή του CD στον οδηγό επειδή ο δαίμονας automount ξεκινά κατά την εκκίνηση του συστήματος. Εάν το CD σας δεν γίνεται διαθέσιμο αυτόματα, πληκτρολογείστε την εντολή mount σε ένα παράθυρο τερματικού. Ανάλογα με την διαμόρφωση του συστήματός σας, μια γραμμή παρόμοια με αυτήν θα κάνει συνήθως το τέχνασμα:

mount /dev/cdrom /mnt/cdrom

Σε μερικά συστήματα, μόνο ο υπερ-χρήστης (root) μπορεί να τοποθετήσει τα αφαιρούμενα μέσα. Αυτό εξαρτάται από τις ρυθμίσεις.

Για λόγους αυτοματοποίησης, ο οδηγός CD έχει συνήθως μια καταχώρηση στο /etc/fstab, το οποίο απαριθμεί τα συστήματα αρχείων και τα σημεία προσάρτησής τους, τα οποία δημιουργούν το δέντρο του συστήματος αρχείων σας. Αυτή είναι μια τέτοια γραμμή:

[david@jupiter ~] grep cdrom /etc/fstab
/dev/cdrom      /mnt/cdrom      iso9660         noauto,owner,ro 0 0
      

Αυτό δείχνει ότι το σύστημα θα καταλάβει την εντολή το mount /mnt/cdrom. Η επιλογή noauto σημαίνει ότι σε αυτό το σύστημα, τα CD δεν προσαρτώνται κατά την εκκίνηση του συστήματος.

Μπορείτε ακόμη και να προσπαθήσετε να προσαρτήσετε το CD κάνοντας δεξί κλικ στο εικονίδιο του CD στην επιφάνεια εργασίας σας, εάν ο διαχειριστής αρχείων σας δεν το κάνει για σας. Μπορείτε να ελέγξετε εάν λειτούργησε με την εντολή mount χωρίς ορίσματα:

[david@jupiter ~] mount | grep cdrom
/dev/cdrom on /mnt/cdrom type iso9660 (ro,nosuid,nodev)
      

7.5.5.2. Χρήση του CD

Μετά την προσάρτηση του CD, μπορείτε να μετακινηθείτε στον κατάλογο του CD, συνήθως στο σημείο προσάρτησης /mnt/cdrom, όπου μπορείτε να έχετε πρόσβαση στο περιεχόμενο του CD-ROM. Χρησιμοποιήστε τις ίδιες εντολές για την εξέταση των αρχείων και των καταλόγων όπως θα χρησιμοποιούσατε για τα αρχεία στο σκληρό δίσκο.


7.5.5.3. Απομάκρυνση του CD

Προκειμένου να βγάλετε το CD από τον οδηγό, αφότου έχετε τελειώσει με αυτό, το σύστημα αρχείων στο CD δεν θα πρέπει να χρησιμοποιείται. Ακόμη και να απλά βρίσκεστε σε έναν από τους υπο-καταλόγους του σημείου προσάρτησης, /mnt/cdrom στο παράδειγμά μας, θα θεωρηθεί ως "χρησιμοποίηση του συστήματος αρχείων", έτσι πρέπει μετακινηθείτ από εκεί. Κάντε αυτό, για παράδειγμα, με τη εισαγωγή της εντολής cd χωρίς ορίσματα, θα σας μεταφέρει ν στον οικείο κατάλογό σας. Μετά από αυτό, μπορείτε να είτε εισάγετε την εντολή

umount /mnt/cdrom

ή

eject cdrom

Warning

Μπλοκαρισμένοι οδηγοί CD

 

ΠΟΤΕ μην ζορίζετε τον οδηγό CD. Το κόλπο με το συνδετήρα είναι κακή ιδέα, γιατί αυτό τελικά θα καταστρέψει το CD, αλλά το σύστημά σας ακόμη θα νομίζει πως το CD είναι ακόμα εκεί, διότι δεν ακολουθήθηκαν οι κανονικές διαδικασίες. Πιο πιθανό είναι να χρειαστεί να επανεκκινήσετε για να ανακτήσετε το σύστημά σας.

Εάν συνεχίζετε να παίρνετε μηνύματα "απασχολημένης συσκευής", ελέγξτε πρώτα ότι όλες οι διεργασίες του κελύφους έχουν αφήσει το σύστημα αρχείων του CD και ότι καμία γραφική εφαρμογή δεν το χρησιμοποιεί πια. Σε περίπτωση αμφιβολίας, χρησιμοποιήστε το εργαλείο lsof (list of open files, λίστα των ανοικτών αρχείων, ΣτΜ.) για να ανακαλύψετε ποιες διαδικασίες χρησιμοποιούν ακόμα π του CD.


7.6. Περίληψη

Όταν όλα είναι στη θέση τους, σημαίνει ότι η μισή δουλειά έχει τελειώσει.

Το να είστε τακτικοί είναι σημαντικό, είναι εξίσου σημαντικό με το να αισθάνεστε άνετα στο περιβάλλον σας, είτε κειμένου ή γραφικό. Το περιβάλλον κειμένου ελέγχεται μέσω των αρχείων διαμόρφωσης φλοιού. Το γραφικό περιβάλλον εξαρτάται πρώτιστα από τη διαμόρφωση του διακομιστή Χ, στον οποία βασίζονται διάφορες άλλες εφαρμογές, όπως οι διαχειριστές παραθύρων και επιφάνειας εργασίας, καθώς και οι γραφικές εφαρμογές, κάθε μια με τα δικά της αρχεία διαμόρφωσης. Για να μάθετε πως να τα ρυθμίσετε πρέπει να διαβάσετε την ανάλογη τεκμηρίωση για το σύστημα και το πρόγραμμα.

Τοπικές ρυθμίσεις όπως η ρύθμιση πληκτρολογίου, κατάλληλων γραμματοσειρών και γλώσσικής υποστήριξης γίνονται καλύτερα κατά τη διάρκεια της εγκατάστασης.

Το λογισμικό ρυθμίζεται είτε αυτόματα είτε χειροκίνητα χρησιμοποιώντας ένα σύστημα διαχείρισης πακέτων.

Οι ακόλουθες εντολές παρουσιάστηκαν σε αυτό το κεφάλαιο:

Πίνακας 7-2. Νέες εντολές στο κεφάλαιο 7: Οικείο περιβάλλον

Εντολή

Σημασία

aptitude

Διαχείριση πακέτων Debian (ολοκληρωμένο περιβάλλον διεπαφής κειμένου).

automount

Αυτόματη προσάρτηση νέων συστημάτων αρχείων (αφαιρούμενων μέσων).

dpkg

Διαχειριστής Πακέτων Debian.

dselect

Διαχείριση πακέτων Debian (παλαιότερο).

loadkeys

Φόρτωση ρυθμίσεων πληκτρολογίου.

lsof

Λίστα των ανοικτών αρχείων.

mount

Προσάρτηση νέου συστήματος αρχείων στο υπάρχον δέντρο συστήματος αρχείων.

ntpdate

Θέστε την ώρα και την ημερομηνία του συστήματος χρησιμοποιώντας έναν διακομιστή ώρας (time server).

quota

Πληροφορίες για την επιτρεπόμενη χρήση του ελεύθερου χώρου στο δίσκο (μερίδια).

recode

Μετατροπή αρχείων από ένα σύνολο χαρακτήρων σε άλλο.

rpm

Διαχείριση πακέτων RPM.

setfont

Επιλογή γραμματοσειράς.

timezone

Ρύθμιση της ζώνης ώρας.

tzconfig

Ρύθμιση της ζώνης ώρας.

ulimit

Αλλαγή ή εμφάνιση των περιορισμών των πόρων.

up2date

Διαχείριση πακέτων RPM (RedHat).

urpmi

Διαχείριση πακέτων RPM (Mandriva).

yum

Διαχείριση πακέτων RPM (SuSe).


7.7. Ασκήσεις

7.7.1. Περιβάλλον φλοιού

Β·         Εμφανίστε τις ρυθμίσεις του περιβάλλοντός σας. Ποια μεταβλητή μπορεί να χρησιμοποιηθεί για να αποθηκεύσει τον τύπο CPU του υπολογιστή σας;

Β·         Γράψτε ένα σενάριο φλοιού που μπορεί να πει κάτι σαν "hello, world!." Δώστε του τις κατάλληλες άδειες έτσι ώστε να μπορεί να εκτελεστεί. Δοκιμάστε το σενάριο σας.

Β·         Δημιουργήστε έναν νέο κατάλογο στον οικείο κατάλογό σας και μετακινήστε το σενάριο στο νέο κατάλογο. Προσθέστε μόνιμα αυτόν τον νέο κατάλογο στην διαδρομή αναζήτησής σας. Βεβαιωθείτε ότι το σενάριο μπορεί να εκτελεσθεί και χωρίς να δώσετε την ακριβή διαδρομή του.

Β·         Δημιουργήστε υπο-καταλόγους στον οικείο κατάλογό σας για να αποθηκεύσετε τα διάφορα αρχεία, για παράδειγμα ένα κατάλογο μουσική (music) για τα αρχεία ήχου, ένα κατάλογο έγγραφα (documents) για τις σημειώσεις σας κ.τ.λ. Και χρησιμοποιήστε τους!

Β·         Δημιουργήστε μια εξατομικευμένη προτροπή (prompt).

Β·         Εμφανίστε τα όρια της χρήσης των πόρων. Μπορείτε να τα αλλάξετε;

Β·         Προσπαθήστε να διαβάσετε τις συμπιεσμένες σελίδες εγχειριδίου χωρίς να τις αποσυμπιέσετε πρώτα.

Β·         Κάνετε ένα ψευδώνυμο lll που στην ουσία εκτελεί το ls -la.

Β ·         Γιατί η εντολή tail testfile > testfile δεν λειτουργεί;

Β ·         Τοποθετήστε ένα CD δεδομένων, όπως το CD εγκατάστασης Linux, και ρίξτε το μια ματιά. Μην ξεχάστε να το εξάγετε όταν δεν το χρειάζεστε άλλο.

·         Το σενάριο στην Ενότητα 7.2.5.2 δεν είναι τέλειο. Παράγει σφάλματα για τα αρχεία που είναι κατάλογοι. Προσαρμόστε το σενάριο έτσι ώστε επιλέγει μόνο τα αρχεία για αντιγραφή. Χρησιμοποιείστε την find για να γίνει η επιλογή. Μην ξεχάστε να καταστήσετε το σενάριο εκτελέσιμο προτού προσπαθήσετε να το εκτελέσετε.


7.7.2. Γραφικό περιβάλλον

·        Δοκιμάστε όλα τα πλήκτρα του ποντικιού στις διαφορετικές περιοχές (τερματικό, επιφάνεια εργασίας, taskbar).


Β·         Εξερευνήστε τα μενού.

Β·         Προσαρμόστε το παράθυρο τερματικού.

Β·         Χρησιμοποιήστε το ποντίκι για να αντιγράψετε και να επικολλήσετε κείμενο από ένα τερματικό σε άλλο.

Β·         Ανακαλύψτε πώς να διαμορφώσετε τον διαχειριστή παραθύρων σας. Δοκιμάστε διαφορετικά περιβάλλοντα εργασίας (εικονικές οθόνες).

Β·         Προσθέστε ένα applet, όπως ένας πίνακας φόρτωσης (load monitor), στην taskbar.

Β·         Εφαρμόστε ένα διαφορετικό θέμα (theme).

Β·         Ενεργοποιήστε την αποκαλούμενη ατημέλητη (sloppy) εστίαση - αυτό είναι που ένα παράθυρο ενεργοποιείται με την κίνηση του ποντικιού από πάνω του, έτσι ώστε να μην χρειαστεί να κάνετε κλικ στο παράθυρο προκειμένου να είστε σε θέση να το χρησιμοποιήσετε.

Β·         Αλλάξτε διαχειριστή παραθύρων.

·         Αποσυνδεθείτε και επιλέξτε διαφορετικό διαχειριστή επιφάνειας εργασίας, δηλαδή επιλέξτε το KDE αν χρησιμοποιούσατε το Gnome πριν. Επαναλάβετε τα προηγούμενα βήματα.T


Κεφάλαιο 8. Εκτυπώσεις

Σε αυτό το κεφάλαιο θα μάθουμε περισσότερα για εκτυπωτές και για εκτύπωση αρχείων. Μετά την ανάγνωση αυτού του τμήματος , θα είστε ικανοί να:
·         Μορφοποιείτε τεκμήρια
·         Κάνετε προ-επισκόπηση των προς εκτύπωση τεκμηρίων
·         Επιλέξετε έναν καλό εκτυπωτή που να συνεργάζεται με το Linux σας
·         Εκτυπώνετε αρχεία και να ελέγχετε τη κατάσταση του εκτυπωτή
·         Ανιχνεύετε τα λάθη εκτύπωσης
·         Βρείτε την απαραίτητη τεκμηρίωση για να εγκαταστήσετε έναν εκτυπωτή

8.1. Εκτύπωση αρχείων

8.1.1. Εκτύπωση από τη γραμμή εντολών

8.1.1.1. Αποστολή αρχείου στον εκτυπωτή

Η εκτύπωση μέσα από μια εφαρμογή είναι πολύ εύκολη, επιλέγοντας την επιλογή εκτύπωσης από το μενού.

Από την γραμμή εντολών, χρησιμοποιείστε την εντολή lp ή lpr.

lp file(s)

lpr file(s)

Αυτές οι εντολές μπορούν να διαβάσουν από σωλήνωση, έτσι μπορείτε να τυπώσετε την έξοδο μια άλλης εντολής με

command | lp

Υπάρχουν πολλές επιλογές διαθέσιμες για να καθοριστεί το σχεδιάγραμμα σελίδων, ο αριθμός αντιγράφων, ο εκτυπωτής με τον οποίο θέλετε να εκτυπώσετε εφόσον έχετε πέραν του ενός διαθέσιμους , το μέγεθος χαρτιού, μονή ή διπλή εκτύπωση εφόσον ο εκτυπωτής σας υποστηρίζει αυτήν την επιλογή, περιθώρια κλπ. Διαβάστε τις σελίδες τεκμηρίωσης για μια πλήρη επισκόπηση.


8.1.1.2. Κατάσταση των εργασιών εκτύπωσης

Μόλις το αρχείο γίνει αποδεκτό στη ουρά εκτύπωσης, η εργασία εκτύπωσης λαμβάνει έναν αναγνωριστικό αριθμό:

davy:~> lp /etc/profile
request id is blob-253 (1 file(s))
      

Για να δείτε την ουρά εκτύπωσης, χρησιμοποιείστε τις εντολές lpq ή lpstat. Όταν εισάγονται χωρίς ορίσματα, εμφανίζουν το περιεχόμενο της προεπιλεγμένης ουράς εκτύπωσης.

davy:~> lpq
blob is ready and printing
Rank    Owner   Job     File(s)         Total Size
active  davy    253     profile         1024 bytes
davy:~> lpstat
blob-253        davy    1024    Tue 25 Jul 2006 10:20_01 AM CEST
      

8.1.1.3. Κατάσταση του εκτυπωτή

Ποιος είναι ο εκτυπωτής προεπιλογής σε ένα σύστημα που έχει πρόσβαση σε πολλούς εκτυπωτές;

lpstat -d

davy:~> lpstat -d
system default destination: blob
      

Ποια είναι η κατάσταση του(ων) εκτυπωτή(ών) μου;

lpstat -p

davy:~> lpstat -p
printer blob now printing blob-253. enabled since Jan 01 18:01
      

8.1.1.4. Αφαίρεση εργασιών από την ουρά εκτύπωσης

Αν δεν σας αρέσει αυτό που βλέπετε από τις εντολές κατάστασης, χρησιμοποιείστε τις εντολές lprm ή cancel για να διαγράψετε εργασίες εκτύπωσης.

davy:~> lprm 253
      

Στο γραφικό περιβάλλον, μπορείτε να δείτε σε ένα αναδυόμενο παράθυρο να σας λέει ότι η εργασία σας έχει ακυρωθεί.

Στα μεγαλύτερα περιβάλλοντα, η lpc μπορεί να χρησιμοποιηθεί για να ελέγξει πολλαπλούς εκτυπωτές. Δείτε τις σελίδες τεκμηρίωσης για κάθε εντολή.

Υπάρχουν πολλές γραφικές διεπαφές εκτύπωσης που αποκρύβουν την lp, και οι περισσότερες γραφικές εφαρμογές έχουνε μια λειτουργία εκτύπωσης που χρησιμοποιεί την lp. Δείτε τις ενσωματωμένες λειτουργίες βοήθειας και τη τεκμηρίωση του συγκεκριμένου προγράμματος για περισσότερες πληροφορίες.

Note

Γιατί υπάρχουν δύο εντολές για κάθε εργασία σχετική με εκτύπωση;

 

Η εκτύπωση στο UNIX και τους κλώνους του έχει μια μεγάλη ιστορία. Υπήρχαν δύο διαφορετικές προσεγγίσεις: η μέθοδος BSD και η μέθοδος SystemV. Για λόγους συμβατότητας, το Linux με to CUPS (Common Unix Printing System) υποστηρίζει και από τις δύο μεθόδους. Επίσης σημειώστε ότι η lp δεν συμπεριφέρεται ακριβώς όπως η lpr, και η lpq και έχει κάποιες διαφορετικές επιλογές απο την lpstat, και η lprm είνα σχεδόν ίδια αλλά όχι ακριβώς με τη cancel. Ποια χρησιμοποιείτε δεν είναι σημαντικό, απλά επιλέξτε τις εντολές που σας είναι βολικές ,ή αυτές που ίσως να γνωρίζετε από παλιότερες εμπειρίες σας με συστήματα UNIX.


8.1.2. Μορφοποίηση

8.1.2.1. Εργαλεία και γλώσσες

Αν θέλουμε να πάρουμε κάτι λογικό από τον εκτυπωτή, τα αρχεία πρέπει πρώτα να μορφοποιηθούν. Εκτός από μία αφθονία λογισμικού μορφοποίησης, το Linux έρχεται με τα βασικά εργαλεία και γλώσσες μορφοποίησης του UNIX.

Το σύγχρονο συστήματα Linux υποστηρίζουν άμεση εκτύπωση, χωρίς κάποια μορφοποίηση από το χρήστη, σε μια σειρά τύπων αρχείων: κείμενο, PDF, PostScript και διάφορα προγράμματα μορφοποίησης όπως τα PNG, JPEG, BMP και GIF.

Για αυτά τα αρχεία δεν χρειάζεται μορφοποίηση, το Linux έρχεται με πολλά εργαλεία μορφοποίησης , όπως οι εντολές pdf2ps, fax2ps και a2ps, οι οποίες μετατρέπουν άλλες μορφοποιήσεις σε PostScript. Αυτές οι εντολές μπορούν να δημιουργήσουν αρχεία τα οποία έπειτα μπορούν να χρησιμοποιηθούν σε άλλα συστήματα που δεν έχουν εγκαταστημένα όλα τα εργαλεία μετατροπής.

Εκτός από αυτά τα εργαλεία γραμμής εντολών υπάρχουν πολλά γραφικά προγράμματα επεξεργασίας κειμένου. Διάφορες πακέτα γραφείου είναι διαθέσιμα, πολλές είναι ελεύθερα. Αυτέά κάνουν τη μορφοποίηση αυτόματα με την υποβολή της εργασίας εκτύπωσης. Μερικά ονόματα: OpenOffice.org, KOffice, AbiWord, WordPerfect, κλπ.

Τα ακόλουθα είναι συνηθιμένες γλώσσες μορφοποίησης εκτυπώσεων:

Tip

Εκτύπωση τεκμηρίωσης

 

Οι σελίδες τεκμηρίωσης (man pages) περιέχουν δεδομένα troff που πρέπει να μορφοποιηθούν πριν βγουν στον εκτυπωτή σας. Η εκτύπωση γίνεται με την επιλογή -t στην εντολή man:

man -t command > man-command.ps

Μετά τυπώνετε το αρχείο PostScript. Αν το σύστημά σας έχει προεπιλεγμένο εκτυπωτή, μπορείτε απλά να εισάγετε την εντολή man -t command για απ' ευθείας εκτύπωση.


8.1.2.2. Προ-επισκόπιση μορφοποιημένων αρχείων

Οτιδήποτε μπορείτε να στείλετε στον εκτυπωτή μπορείτε κανονικά να το στείλετε και στην οθόνη σας. Ανάλογα με την τύπο των αρχείων, μπορείτε να χρησιμοποιήσετε μια από αυτές τις εντολές:


8.2. Η πλευρά του διακομιστή

8.2.1. Γενικά

Πριν από λίγα χρόνια, η επιλογή των χρηστών Linux ήταν απλή: ο καθένας εκτελούσε το παλιό καλό LPD από κώδικα BSD Net-2 Μετά το LPRng έγινε περισσότερο δημοφιλές, αλλά σήμερα οι σύγχρονες διανομές Linux χρησιμοποιούν το CUPS, το κοινό σύστημα εκτύπωσης των UNIX. Το CUPS είναι μια υλοποίηση του Internet Printing Protocol (IPP), ένα πρότυπο πρωτόκολλο RFC βασισμένο στο HTTP που αντικαθιστά το αξιοσέβαστο LPD πρωτόκολλο. Το CUPS διανέμεται με δημόσια άδεια GNU. Το CUPS είναι επίσης το προεπιλεγμένο σύστημα εκτύπωσης στο MacOS X.


8.2.2. Γραφική διαμόρφωση εκτυπωτή

Οι περισσότερες διανομές έρχονται με μια γραφική διεπαφή για τη διαμόρφωση των δικτυακών και τοπικών (παράλληλης θύρας ή USB) εκτυπωτών. Η διεπαφή σας επιτρέπει να επιλέξετε τον τύπο των εκτυπωτών από έναν κατάλογο και να κάνετε μια εύκολη δοκιμή . Δεν είναι απαραίτητο να ασχοληθείτε με την τροποποίηση και τη θέση των αρχείων διαμόρφωσης. Ελέγξτε τη τεκμηρίωση του συστήματος πριν προσπαθήσετε να εγκαταστήσετε τον εκτυπωτή σας.

Το CUPS μπορεί επίσης να διαμορφωθεί μέσω μιας διεπαφής ιστού η οποία εκτελέιται στην θύρα 631 του υπολογιστή σας. Για να ελέγξετε αυτή τη δυνατότητα, προσπαθήστε να ανοίξετε το localhost:631/help ή localhost:631/.


8.2.3. Αγορά εκτυπωτή για Linux

Δεδομένου ότι όλο και περισσότεροι προμηθευτές εκτυπωτών διαθέτουν οδηγούς για CUPS, το CUPS επιτρέπει την εύκολη σύνδεση με οποιονδήποτε άλλο εκτυπωτή το οποίο μπορείτε να συνδέσετε με μια σειριακή, παράλληλη, ή USB θύρα, καθώς και οποιονδήποτε εκτυπωτή δικτύου. Το CUPS θα εξασφαλίσει μια ομοιόμορφη παρουσίαση των διαφορετικών τύπων εκτυπωτών σε εσάς και τις εφαρμογές σας.

Οι εκτυπωτές οι οποίοι έρχονται μόνο με έναν Win9x οδηγό μπορεί να παρουσιάσουν προβλήματα εάν δεν έχουν άλλη υποστήριξη. Ελέγξετε στο http://linuxprinting.org/ αν έχετε αμφιβολίες.

Στο παρελθόν, η καλύτερη επιλογή σας θα ήτανε εκτυπωτής με PostScript υποστήριξη στο firmwar, αφού σχεδόν όλο το λογισμικό UNIX ή Linux που παράγει εκτυπώσιμη έξοδο, χρησιμοποιεί τοε PostScript, τη βασική γλώσσα της εκδοτικής βιομηχανίας. Οι PostScript εκτυπωτές είναι συνήθως λίγο ακριβότεροι, αλλά εξασφαλίζουν 100% λειτουργία. Στις μέρες μας, εντούτοις, η σημασία αυτής της εμπειρικής συμβουλής μειώνεται.


8.3. Προβλήματα εκτύπωσης

Σε αυτή την ενότητα, θα συζητήσουμε τι μπορεί να κάνει κάποιος χρήστης αν κάτι πάει στραβά. Δεν θα συζητήσουμε προβλήματα που αναφέρονται στο τμήμα των υπηρεσιών εκτύπωσης το σχετικό με τους δαίμονες, καθώς αυτό είναι δουλειά των διαχειριστών συστημάτων.


8.3.1. Λάθος αρχείο

Αν εκτυπώσετε λάθος αρχείο, η εργασία μπορεί να ακυρωθεί με την εντολή lprm jobID, όπου το jobID έχει τη μορφή όνομα_εκτυπωτή-αριθμός_εργασίας_εκτύπωσης (οι πληροφορίες εμφανίζονται στο lpq ή lpstat). Αυτό θα δουλέψει αν υπάρχουν και άλλες εργασίες που περιμένουν να εκτυπωθούν σε αυτήν την ουρά εκτύπωσης. Εντούτοις , πρέπει να είστε πραγματικά γρήγοροι αν είστε οι μόνοι που χρησιμοποιείται αυτόν τον εκτυπωτή, δεδομένου ότι οι εργασίες συνήθως μπαίνουν στην ουρά και στέλνονται στον εκτυπωτή σε μερικά δευτερόλεπτα. Μόλις φθάσουν στον εκτυπωτή , είναι πολύ αργά να αφαιρέσετε τις εργασίες με τα εργαλεία του Linux.

Αυτό που μπορείτε να προσπαθήσετε σε αυτές τις περιπτώσεις, ή σε περιπτώσεις όπου υπάρχει λάθος στον οδηγό εκτυπωτή και εμφανίζονται σκουπίδια στον εκτυπωτή, είναι να κλείσετε τον εκτυπωτή. Εντούτοις, αυτό μπορεί να μην είναι το καλύτερο σχέδιο, δεδομένου ότι μπορείτε να προκαλέσετε διαφόρων ειδών δυσλειτουργίες.


8.3.2. Η εκτύπωσή μου δεν βγήκε

Χρησιμοποιείστε την εντολή lpq και δείτε αν μπορείτε να εντοπίσετε την εργασία σας:

elly:~> lpq
Printer: lp@blob
 Queue: 2 printable jobs
 Server: pid 29998 active
 Unspooler: pid 29999 active
 Status: waiting for subserver to exit at 09:43:20.699
 Rank   Owner/ID             Class Job Files          Size Time
1      elly@blob+997           A   997 (STDIN)         129 09:42:54
2      elly@blob+22            A    22 /etc/profile    917 09:43:20
      

Πολλοί εκτυπωτές έχουν πλέον διεπαφές ιστού, οι οποίες μπορούν να εμφανίσουν τις πληροφορίες κατάστασης πληκτρολογώντας τη διεύθυνση IP του εκτυπωτή σας στον περιηγητή ιστού:

Εικόνα 8-1. Κατάσταση εκτυπωτή μέσω διεπαφής ιστού

Note

Διεπαφή ιστού CUPS και διεπαφή ιστού εκτυπωτή

 

Σημειώστε αυτό δεν είναι η διεπαφή του CUPS και λειτουργεί μόνο για εκτυπωτές που υποστηρίζουν αυτά τα χαρακτηριστικά. Ελέγξτε τη τεκμηρίωση του εκτυπωτή σας.

Αν το ID της εργασίας σας δεν βρίσκετε εκεί ούτε στον εκτυπωτή σας, ελάτε σε επαφή με τον διαχειριστή συστήματος. Αν το ID της εργασίας παρατίθεται στην έξοδο, ελέγξτε ότι ο εκτυπωτής τυπώνει αυτήν την στιγμή. Σε αυτή την περίπτωση, περιμένετε, η εργασία θα εκτελεστεί σε σύντομο χρονικό διάστημα.

Αν ο εκτυπωτής δεν εκτυπώνει, ελέγξτε ότι έχει χαρτί, ελέγξτε τις φυσικές συνδέσεις στην ηλεκτρική παροχή και στο δίκτυο δεδομένων. Αν αυτά είναι εντάξει, ο εκτυπωτής μπορεί να χρειάζεται επανεκκίνηση. Ρωτήστε τον διαχειριστή συστήματος για συμβουλές.

Στην περίπτωση ενός δικτυακού εκτυπωτή, δοκιμάστε να εκτυπώσετε από έναν άλλο υπολογιστή. Αν ο εκτυπωτής σας είναι προσπελάσιμος από τον υπολογιστή σας (δείτε το Κεφάλαιο 10 για την υπηρεσία ping), μπορείτε να προσπαθήσετε να εκτυπώσετε ένα το μορφοποιημένο αρχείο, όπως ένα αρχείο .ps σε περίπτωση PostScript εκτύπωσης, μέσω ενός πελάτη FTP. Αν αυτό λειτουργεί, το σύστημα εκτύπωσής σας δεν είναι σωστά διαμορφωμένο. Αν αυτό δεν δουλεύει, ίσως ο εκτυπωτής σας δεν αναγνωρίζει τη μορφοποίηση με την οποία το τροφοδοτείται.

Ο ιστοτόπος Eκτυπώσεις GNU/Linux παρέχει περισσότερες πληροφορίες.


8.4. Περίληψη

Η υπηρεσία εκτύπωσης του Linux έρχεται με ένα σύνολο εργαλείων εκτύπωσης βασισμένα στο πρότυπα εργαλεία UNIX LPD, είτε είναι SystemV ή BSD. Παρακάτω ακολουθεί ένας πίνακας εντολών εκτύπωσης.

Πίνακας 8-1. Νέες εντολές του κεφαλαίου 8: Εκτυπώσεις

Εντολή

Σημασία

lpr ήr lp

Εκτύπωση αρχείου

lpq ή lpstat

Εμφάνιση ουράς αναμονής

lprm ή cancel

Αφαίρεση εργασίας εκτύπωσης

acroread

Εμφάνιση αρχείου PDF

groff

Εργαλείο μορφοποίησης

gv

Εμφάνιση αρχείου PostScript

printconf

Διαμόρφωση εκτυπωτών

xdvi

Εμφάνιση αρχείου DVI

xpdf

Εμφάνιση αρχείου PDF

a2ps

Μετασχηματισμός αρχείου σε PostScript


8.5. Ασκήσεις

Η διαμόρφωση και ο έλεγχος των εκτυπωτών συνήθως απαιτούν πρόσβαση σε λογαριασμό υπερ-χρήστη. Σε αυτήν την περίπτωση, μπορείτε να προσπαθήσετε να:

Οι ακόλουθες ασκήσεις μπορούν να γίνουν χωρίς εκτυπωτή ή λογαρισμό υπερ-χρήστη.


Κεφάλαιο 9. Θεμελιώδεις τεχνικές εφεδρικών αντιγράφων

Ατυχήματα συμβαίνουν, αργά ή γρήγορα. Σα αυτό το κεφάλαιο θα συζητήσουμε πώς να διασφαλίσουμε τα δεδομένα χρησιμοποιώντας άλλους υπολογιστές, δισκέτες, CD-ROMs και ταινίες.χ Επίσης θα συζητήσουμε τις πιο δημοφιλείς εντολές συμπίεσης και αρχειοθέτησης.
Με τη συμπλήρωση του κεφαλαίου, θα γνωρίζετε πώς να:

9.1. Εισαγωγή

Αν και το Linux είναι από τα ασφαλέστερα λειτουργικά συστήματα, και ακόμη και αν έχει σχεδιαστεί για να λειτουργεί συνέχεια, τα δεδομένα μπορεί να χαθούν. Η απώλεια δεδομένων είναι συνήθως συνέπεια σφαλμάτων των χρηστών, αλλά μερικές φορές μπορεί να προκληθεί από ένα σφάλμα του συστήματος, όπως απώλεια παροχής ρεύματος, αστοχία δίσκου, γι' αυτό είναι καλή ιδέα να κρατούμε ένα εφεδρικό αντίγραφο των ευαίσθητων ή/και σημαντικών δεδομένων.


9.1.1. Προετοιμασία δεδομένων

9.1.1.1. Αρχειοθέτηση με tar

Τις περισσότερες φορές, πρώτα συλλέγουμε όλα τα δεδομένα προς αντιγραφή σε μια μοναδική αρχειοθήκη, που μετά θα συμπιέσουμε. Η διαδικασία αρχειοθέτησης περιλαμβάνει τη συν-ένωση όλων των αρχείων και την αφαίρεση των περιττών κενών. Στο Linux, αυτό γίνεται συνήθως με την εντολή tar. Η tar αρχικά σχεδιάστηκε για την αρχειοθέτηση δεδομένων σε ταινίες, αλλά μπορεί επίσης να δημιουργήσει αρχειοθήκες, γνωστές σαν tarballs.

Η tar έχει πολλές επιλογές, οι σημαντικότερες δίνονται παρακάτω:

Συχνά παραλείπουμε τη παύλα πριν τις επιλογές της tar, όπως θα δείτε στα παρακάτω παραδείγματα.

Note

Χρησιμοποιείτε GNU tar για συμβατότητα

 

Οι αρχειοθήκες που δημιουργούνται με ιδιόκτητες εκδόσεις της tar σε ένα σύστημα, μπορεί να μην είναι συμβατές με τις αρχειοθήκες της tar σε άλλο ιδιόκτητο σύστημα. Αυτό μπορεί να σας δημιουργήσει προβλήματα, αφού στην ουσία είναι σαν να μην έχετε κάνει αρχειοθέτηση. Η χρήση της GNU tar σε όλα τα συστήματα γλυτώνει τον διαχειριστή συστημάτων σας από το να ξεσπάσει σε λυγμούς. Το Linux πάντα χρησιμοποιεί τη GNU tar. Όταν δουλεύετε με άλλα συστήματα UNIX, εισάγετε tar --help για να δείτε ποια έκδοση χρησιμοποιείτε. Επικοινωνήστε με το διαχειριστή συστημάτων σας αν δεν βλέπετε τη λέξη GNU.

Στο παρακάτω παράδειγμα, δημιουργείται μια αρχειοθήκη και στη συνέχεια ανοίγεται.

gaby:~> ls images/
me+tux.jpg  nimf.jpg

gaby:~> tar cvf images-in-a-dir.tar images/
images/
images/nimf.jpg
images/me+tux.jpg

gaby:~> cd images

gaby:~/images> tar cvf images-without-a-dir.tar *.jpg
me+tux.jpg
nimf.jpg

gaby:~/images> cd

gaby:~> ls */*.tar
images/images-without-a-dir.tar

gaby:~> ls *.tar
images-in-a-dir.tar 

gaby:~> tar xvf images-in-a-dir.tar 
images/
images/nimf.jpg
images/me+tux.jpg

gaby:~> tar tvf images/images-without-dir.tar 
-rw-r--r-- gaby/gaby  42888 1999-06-30 20:52:25 me+tux.jpg
-rw-r--r-- gaby/gaby   7578 2000-01-26 12:58:46 nimf.jpg

gaby:~> tar xvf images/images-without-a-dir.tar 
me+tux.jpg
nimf.jpg

gaby:~> ls *.jpg
me+tux.jpg  nimf.jpg
      

Αυτό το παράδειγμα επίσης δείχνει τη διαφορά ανάμεσα σε ένα αρχειοθετημένο κατάλογο και σε μερικά αρχειοθετημένα αρχεία. Είναι καλό να αρχειοθετείτε μόνο καταλόγους, ώστε τα αρχεία να μη σκορπίζονται εδώ και εκεί όταν ανοίξετε το tarball (αυτό μπορεί να είναι σε ένα άλλο σύστημα, όπου δεν ξέρετε ποια αρχεία ήταν εκεί και ποια προέκυψαν από την αρχειοθήκη).

Όταν στο σύστημά σας έχει συνδεθεί συσκευή ταινίας και έχει διαμορφωθεί από τον διαχειριστή συστήματος, τα ονόματα αρχείων που λήγουν σε .tar αντικαθίστανται με το όνομα της συσκευής, για παράδειγμα:

tar cvf /dev/tape mail/

Ο κατάλογος mail και όλα τα αρχεία που περιέχει θα συμπιεστούν σε ένα αρχείο που θα γραφεί κατ' ευθείαν στην ταινία Θα εμφανιστεί μια λίστα των περιεχομένων επειδή χρησιμοποιήσαμε την επιλογή φλύαρης εξόδου.


9.1.1.2. Αυξητικά εφεδρικά αντίγραφα με tar

Το εργαλείο tar υποστηρίζει τη δημιουργία αυξητικών εφεδρικών αντιγράφων, με την επιλογή -N. Με αυτή την επιλογή, μπορείτε να ορίσετε μια ημερομηνία, και η tar θα ελέγξει την ημερομηνία τροποποίησης για όλα τα περιλαμβανόμενα αρχεία. Αν τα αρχεία έχουν τροποποιηθεί πιο πρόσφατα από την δεδομένη ημερομηνία, τα αρχεία θα συμπεριληφθούν στο εφεδρικό αντίγραφο. Το παρακάτω παράδειγμα χρησιμοποιεί την ημερομηνία δημιουργίας μιας παλαιότερης αρχειοθήκης για να ορίσει την ημερομηνία ελέγχου. Πρώτα, δημιουργείται η αρχική αρχειοθήκη και στη συνέχεια εμφανίζεται η ημερομηνία δημιουργίας της. Μετά δημιουργείται ένα νέο αρχείο, και αμέσως μετά ξεκινούμε αυξητικό εφεδρικό αντίγραφο, που ουσιαστικά περιέχει μόνο το νέο αρχείο:

jimmy:~> tar cvpf /var/tmp/javaproggies.tar java/*.java
java/btw.java
java/error.java
java/hello.java
java/income2.java
java/income.java
java/inputdevice.java
java/input.java
java/master.java
java/method1.java
java/mood.java
java/moodywaitress.java
java/test3.java
java/TestOne.java
java/TestTwo.java
java/Vehicle.java

jimmy:~> ls -l /var/tmp/javaproggies.tar
-rw-rw-r-- 1 jimmy   jimmy   10240 Jan 21 11:58 /var/tmp/javaproggies.tar

jimmy:~> touch java/newprog.java

jimmy:~> tar -N /var/tmp/javaproggies.tar \
-cvp /var/tmp/incremental1-javaproggies.tar java/*.java 2> /dev/null
java/newprog.java

jimmy:~> cd /var/tmp/

jimmy:~> tar xvf incremental1-javaproggies.tar
java/newprog.java
      

Τα πρότυπα σφάλματα ανακατευθύνονται στο /dev/null. Αν δεν γίνει αυτό, η tar θα εμφανίσει ένα μήνυμα για κάθε αμετάβλητο αρχείο, οτι δεν θα αντιγραφεί.

Αυτή η μέθοδος έχει το μειονέκτημα οτι ελέγχει τις ημερομηνίες αρχείων. Πείτε οτι μεταφορτώνετε μια αρχειοθήκη σε ένα κατάλογο που έχει τα εφεδρικά σας αντίγραφα, και η αρχειοθήκη περιέχει αρχεία δημιουργημένα πριν δύο χρόνια. When checking the timestamps of those files against the timestamp on the initial archive, the new files will actually seem old to tar, and will not be included in an incremental backup made using the -N option.

Μια καλύτερη επιλογή είναι η -g, που δημιουργεί μια λίστα αρχείων για αντιγραφή. 'Οταν κάνετε αυξητικά εφεδρικά αντίγραφα, τα αρχεία ελέγχονται με βάση τη λίστα. Το παράδειγμα δείχνει πως δουλεύει:

jimmy:~> tar cvpf work-20030121.tar -g snapshot-20030121 work/
work/
work/file1
work/file2
work/file3

jimmy:~> file snapshot-20030121
snapshot-20030121: ASCII text
      

Την επόμενη μέρα, ο χρήστης jimmy εργάζεται στο αρχείο file3 ακόμη λίγο, και δημιουργεί το αρχείο file4. Στο τέλος της μέρα, κάνει ένα νέο εφεδρικό αντίγραφο:

jimmy:~> tar cvpf work-20030122.tar -g snapshot-20030121 work/
work/
work/file3
work/file4
      

Αυτά είναι μερικά πολύ απλά παραδείγματα, αλλά θα μπορούσατε να χρησιμοποιήσετε παρόμοιες εντολές σαν εργασίες cron (δες Ενότητα 4.4.4), που καθορίζει λόφου χάρη ένα όνομα αρχείου για το εβδομαδιαίο εφεδρικό αντίγραφο, και ένα όνομα για το ημερήσιο. Όταν παίρνουμε πλήρη εφεδρικά αντίγραφα, τα εβδομαδιαία και τα ημερήσια 'μηδενίζονται' και ξεκινούμε από την αρχή.

Περισσότερες πληροφορίες στη τεκμηρίωση της tar.

Tip

Τα αληθινά εργαλεία

 

Όπως πιθανά παρατηρήσατε, η tar είναι OK όταν μιλάμε για έναν απλό κατάλογο, ένα ομοειδές σύνολο αρχείων. Όμως, όταν χρειάζεται να αρχειοθετήσετε ολόκληρα διαμερίσματα ή δίσκους ή μεγαλύτερες εγκαταστάσεις, υπάρχουν ειδικά εργαλεία, που είναι πιο εύχρηστα. Η tar εξηγείται εδώ επειδή είναι πολύ δημοφιλής στη διανομή αρχειοθηκών. Θα σας τύχει συχνά να πρέπει να εγκαταστήσετε λογισμικό που έρχεται στη μορφή “συμπιεσμένου tarball". Δείτε την Ενότητα 9.3 για ένα ευκολότερο τρόπο λήψης τακτικών εφεδρικών αντιγράφων.


9.1.1.3. Συμπίεση και αποσυμπίεση με gzip ή bzip2

Τα δσδομένα, και τα tarballs, μπορεί να συμπιεστούν με εργαλεία συμπίεσης. Η εντολή gzip θα προσθέσει ένα την κατάληξη .gz στο αρχείο και θα αφαιρέσει το αρχικό αρχείο.

jimmy:~> ls -la | grep tar
-rw-rw-r-- 1 jimmy  jimmy    61440 Jun  6 14:08 images-without-dir.tar

jimmy:~> gzip images-without-dir.tar 
jimmy:~> ls -la images-without-dir.tar.gz 
-rw-rw-r-- 1 jimmy  jimmy    50562 Jun  6 14:08 images-without-dir.tar.gz
      

Η αποσυμπίεση γίνεται με την επιλογή -d.

Η εντολή bzip2 δουλεύει παρόμοια, αλλά χρησιμοποιεί βελτιωμένο αλγόριθμο συμπίεσης, και δημιουργεί παρόμοια αρχεία. Δείτε την τεκμηρίωση της bzip2 για περισσότερα.

Το λογισμικό του Linux συχνά διανέμεται σε μορφή συμπιεσμένου tarball. Η λογική σειρά ενεργειών είναι να ανοίξουμε τις αρχειοθήκες και να βρούμε το αρχείο README και να το διαβάσουμε. Γενικά θα περιέχει οδηγίες εγκατάστασης του λογισμικού.

Η εντολή GNU tar αντιλαμβάνεται τα συμπιεσμένα αρχεία. Με την εντολή

tar zxvf file.tar.gz

αποσυμπιέζουμε και απο-αρχειοθετούμε τα αρχεία .tar.gz ή .tgz files. Με την εντολή

tar jxvf file.tar.bz2

αποσυμπιέζουμε αρχειοθήκες tar που συμπιέστηκαν με bzip2.


9.1.1.4. Αρχειοθήκες Java

Το έργο GNU παρέχει το εργαλείο jar για τη δημιουργία αρχειοθηκών Java. Είναι μια εφαρμογή Java που συνδυάζει πολλαπλά αρχεία σε μια αρχειοθήκη JAR. Αν και πρόκειται για γενικό εργαλείο αρχειοθέτησης και συμπίεσης, βασισμένο στα πρότυπα συμπίεσης ZIP και ZLIΒ, η jar σχεδιάστηκε κυρίως για το πακετάρισμα κώδικα Java, applets και εφαρμογών σε ένα μόνο αρχείο. Όταν συνδυάζονται σε ένα μοναδικό αρχείο, τα συστατικά μια εφαρμογής Java μεταφορτώνονται πολύ ταχύτερα.

Σε αντίθεση με τη tar, η jar συμπιέζει εξ' ορισμού, ανεξάρτητα από άλλα εργαλεία, γιατί βασικά είναι μια έκδοση Java της zip. Επιπλέον, επιτρέπει την υπογραφή από τον συγγραφές επιμέρους τμημάτων της αρχειοθήκης, ώστε να ταυτοποιείται η προέλευσή του.

Η σύνταξη είναι σχεδόν ίδια με αυτή της tar, αναφερόμαστε στη info jar για ειδικές διαφορές.

Note

tar, jar και συμβολικοί σύνδεσμοι

 

Ένα αξιοσημείωτο χαρακτηριστικό που δεν αναφέρεται συχνά στη τεκμηρίωση είναι οτι η jar ακολουθεί συμβολικούς συνδέσμους. Τα δεδομένα που δείχνονται από τους συμβολικούς συνδέσμους θα περιληφθούν στην αρχειοθήκη. Η προεπιλογή της tar θα αποθηκεύσει μόνο το συμβολικό σύνδεσμο, αλλά αυτή η συμπεριφορά μπορεί να αλλάξει με την επιλογή -h στην tar.


9.1.1.5. Μεταφορά των δεδομένων

Η αποθήκευση αντιγράφων των δεδομένων σε άλλο υπολογιστή είναι άλλο είναι μια απλή και ακριβής μέθοδος εφεδρικών αντιγράφων. Δείτε το Κεφάλαιο 10 για περισσότερες πληροφορίες για τις scp, ftp κλπ..

Στην επόμενη ενότητα θα συζητήσουμε τις τοπικές συσκευές εφεδρικών αντιγράφων.


9.2. Μεταφορά δεδομένων σε συσκευή εφεδρικών αντιγράφων

9.2.1. Αντιγραφή σε δισκέτα

9.2.1.1. Μορφοποίηση της δισκέτας

Στα περισσότερα συστήματα Linux, οι χρήστες έχουν πρόσβαση σε συσκευή δισκέτας. Το όνομα της συσκευής μπορεί να διαφέρει ανάλογα με το σύστημα και τον αριθμό των συσκευών, επικοινωνήστε με τον διαχειριστή του συστήματος σας. Σε μερικά συστήματα, υπάρχει σύνδεσμος /dev/floppy που δείχνει στη σωστή συσκευή, πιθανά τη /dev/fd0 (η πρώτη συσκευή δισκέτας) ή /dev/fd0H1440 (για δισκέτες 1,44MB).

Το εργαλείο fdformat μορφοποιεί τη δισκέτα σε χαμηλό επίπεδο. Το όνομα της συσκευής δίνεται ώς επιλογή. Η fdformat θα εμφανίσει σφάλμα όταν η δισκέτα προστατεύεται για εγγραφή.

emma:~> fdformat /dev/fd0H1440
Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting ... done
Verifying ... done
emma:~>
      

Η εντολή mformat (από το πακέτο mtools) χρησιμοποιείται για τη δημιουργία DOS-συμβατών δισκετών οι οποίες στη συνέχεια μπορούν να προσπελαστούν με τιςmcopy, mdir και άλλες m-εντολές.

Επίσης είναι διαθέσιμα πολλά γραφικά εργαλεία.

Εικόνα 9-1. Μορφοποιητής δισκέτας

Αφού η δισκέτα μορφοποιηθεί μπορεί να προσαρτηθεί και να προσπελαστεί κανονικά, σαν ένας μικρός κατάλογος, συνήθως ο /mnt/floppy.

Αν το χρειαστείτε, εγκαταστήστε την υπηρεσία mkbootdisk, που κατασκευάζει δισκέτα εκκίνησης για το σύστημά σας.


9.2.1.2. Χρήση την εντολής dd για αποτύπωση (dump) δεδομένων

H εντολή dd χρησιμοποιείται και για να βάλουμε δεδομένα σε δίσκο, ή να τα πάρουμε από εκεί, ανάλογα με τις συσκευές εισόδου και εξόδου. Ένα παράδειγμα:

gaby:~> dd if=images-without-dir.tar.gz of=/dev/fd0H1440
98+1 records in
98+1 records out

gaby~> dd if=/dev/fd0H1440 of=/var/tmp/images.tar.gz
2880+0 records in
2880+0 records out

gaby:~> ls /var/tmp/images*
/var/tmp/images.tar.gz

      

Σημειώστε οτι η αποτύπωση γίνεται σε μη-προσαρτημένη συσκευή. Οι δισκέτες που δημιουργούνται με αυτή τη μέθοδο δεν μπορούν να προσαρτηθούν στο σύστημα αρχείων, αλλά σίγουρα είναι μια μέθοδος δημιουργίας δισκετών εκκίνησης και αποθήκευσης δεδομένων. Για περισσότερες πληροφορίες στις δυνατότητες της dd, διαβάστε τις σελίδες τεκμηρίωσης.

Αυτό το εργαλείο είναι μέρος του πακέτου GNU coreutils.

Note

Αποτύπωση δίσκων

 

Η εντολή dd μπορεί επίσης να χρησιμοποιηθεί για την ακριβή (χαμηλού επιπέδου) αποτύπωση ολόκληρου σκληρού δίσκου.


9.2.2. Αντιγραφή με συσκευή εγγραφής CD

Σε μερικά συστήματα οι χρήστες μπορούν να χρησιμοποιήσουν συσκευές εγγραφής CD. Πρώτα τα δεδομένα σας πρέπει να μορφοποιηθούν. Χρησιμοποιούμε την εντολή mkisofs στον κατάλογο όπου βρίσκονται τα αρχεία προς αντιγραφή. Ελέγξτε με την df αν υπάρχει αρκετός ελεύθερος χώρος, γιατί θα δημιουργηθεί ένα καινούργιο αρχείο μεγέθους περίπου όσο ολόκληρος ο κατάλογος:

[rose@blob recordables] df -h .
Filesystem            Size  Used Avail Use% Mounted on
/dev/hde5              19G   15G  3.2G  82% /home

[rose@blob recordables] du -h -s .
325M    .

[rose@blob recordables] mkisofs -J -r -o cd.iso .
<--snap-->
making a lot of conversions
<--/snap-->
98.95% done, estimate finish Fri Apr  5 13:54:25 2002
Total translation table size: 0
Total rockridge attributes bytes: 35971
Total directory bytes: 94208
Path table size(bytes): 452
Max brk space used 37e84
166768 extents written (325 Mb)
      

Οι επιλογές -J και -r επιτρέπουν στο δημιουργούμενο CD-ROM να προσαρτάται σε διαφορετικά συστήματα, δείτε τη τεκμηρίωση για πληροφορίες. Μετά από αυτό, το CD μπορεί να γραφτεί με το εργαλείο cdrecord και τις κατάλληλες επιλογές:

[rose@blob recordables] cdrecord -dev 0,0,0 -speed=8 cd.iso
Cdrecord 1.10 (i686-pc-linux-gnu) (C) 1995-2001 Joerg Schilling
scsidev: '0,0,0'
scsibus: 0 target: 0 lun: 0
Linux sg driver version: 3.1.20
Using libscg version 'schily-0.5'
Device type    : Removable CD-ROM
Version        : 0
Response Format: 1
Vendor_info    : 'HP      '
Identification : 'CD-Writer+ 8100 '
Revision       : '1.0g'
Device seems to be: Generic mmc CD-RW.
Using generic SCSI-3/mmc CD-R driver (mmc_cdr).
Driver flags   : SWABAUDIO
Starting to write CD/DVD at speed 4 in write mode for single session.
Last chance to quit, starting real write in 0 seconds. 
Operation starts.
      

Ανάλογα με τη συσκευή εγγραφής CD, τώρα θα έχετε αρκετό χρόνο για να ... καπνίσετε ή να φάτε κάτι υγιεινό ή/και πιείτε ένα καφέ. Με το τέλος της εργασίας, θα λάβετε ένα μήνυμα επιβεβαίωσης:

Track 01: Total bytes read/written: 341540864/341540864 
          (166768 sectors).

Υπάρχουν και μερικά γραφικά εργαλεία για τη διευκόλυνσή σας. Ένα από τα δημοφιλέστερα είναι το xcdroast, που είναι ελεύθερα διαθέσιμο από τον ιστοτόπο X-CD-Roast και περιλαμβάνεται στα περισσότερα συστήματα και στο κατάλογο GNU. Τόσο το KDE όσο και το Gnome έχουν γραφικές διεπαφές για τη δημιουργία CDs.


9.2.3. Εφεδρικά αντίγραφα προς/από οδηγούς jazz, συσκευές USB κλπ.

Αυτές οι συσκευές συνήθως προσαρτώνται στο σύστημα αρχείων. Μετά τη διαδικασία προσάρτησης, οι συσκευές προσπελαύνονται σαν κανονικοί κατάλογοι, έτσι μπορείτε να χρησιμοποιήσετε τις γνωστές εντολές διαχείρισης αρχείων.

Στο ακόλουθο παράδειγμα, αντιγράφονται εικόνες από μια κάμερα USB σε ένα σκληρό δίσκο:

robin:~> mount /mnt/camera

robin:~> mount | grep camera
/dev/sda1 on /mnt/camera type vfat (rw,nosuid,nodev)
      

Αν η κάμερα είναι η μοναδική συσκευή USB αποθήκευσης που συνδέεται στο σύστημά σας, αυτό είναι ασφαλές. Αλλά οι συσκευές USB λαμβάνουν θέσεις στο κατάλογο /dev όπως συνδέονται στο σύστημα. Έτσι, αν έχετε συνδέσει ένα USB stick στο σύστημά σας, θα είναι στη θέση /dev/sda, και μετά συνδέσετε τη κάμερα, αυτή θα πάρει τη θέση /dev/sdb – αν δεν έχετε δίσκους SCSI disks, που είναι επίσης στις θέσεις /dev/sd*. Σε νεότερα συστήματα, από τον πυρήνα 2.6 και μετά, ένα σύστημα hotplug που λέγεται HAL (Hardware Abstraction Layer) διασφαλίζει οτι οι χρήστες δεν ασχολούνται με τέτοια πράγματα. Αν θέλετε να δείτε που βρίσκεται η συσκευή σας, εισάγετε την dmesg αφού βάλετε τη συσκευή σας.

Τώρα μπορείτε να αντιγράψετε τα αρχεία σας:

robin:~> cp -R /mnt/camera/* images/

robin:~> umount /mnt/camera
      

Παρόμοια, ένας οδηγός jazz μπορεί να προσαρτηθεί στο /mnt/jazz.

Για να δουλέψει η συσκευή πρέπει να προστεθούν γραμμές στα /etc/modules.conf και /etc/fstab. Για περισσότερες πληροφορίες δείτε τα HOWTOs της συγκεκριμένης συσκευής. Σε συστήματα με πυρήνα 2.6.x ή ανώτερο, μπορείτε να ελέγξετε τις σελίδες τεκμηρίωσης της modprobe και το αρχείο modprobe.conf.


9.2.4. Εφεδρικά αντίγραφα από/προς ταινίες

Αυτό γίνεται με τη tar (δες παραπάνω). Το εργαλείο mt χρησιμοποιείται για τον έλεγχο συσκευών μαγνητικής ταινίας, όπως η /dev/st0. Ολόκληρα βιβλία έχουν γραφεί για τα εφεδρικά αντίγραφα σε ταινίες, επομένως για περισσότερες πληροφορίες δείτε τη λίστα στο Παράρτημα B . Να έχετε υπ' όψη οτι οι βάσεις δεδομένων ίσως έχουν άλλη διαδικασία εφεδρικής αντιγραφής λόγω της αρχιτεκτονικής τους.

Οι κατάλληλες εντολές εφεδρικής αντιγραφής συνήθως τοποθετούνται στους καταλόγους cron για να εκτελούνται τακτικά. Σε μεγαλύτερα περιβάλλοντα, εφαρμόζεται είτε το ελεύθερα διαθέσιμο πακέτο Amanda ή κάποια εμπορική λύση για την εφεδρική αντιγραφή πολλών συστημάτων. Η διαχείριση ταινιών, όμως, είναι εργασία του διαχειριστή συστημάτων, πέρα από τους στόχους αυτού του εγχειριδίου.


9.2.5. Εργαλεία των διανομών

Οι περισσότερες διανομές Linux προσφέρουν ειδικά εργαλεία για τη διευκόλυνσή σας. Μια μικρή επισκόπηση:


9.3. Χρήση rsync

9.3.1. Εισαγωγή

Το πρόγραμμα rsync είναι ένα γρήγορο και ευέλικτο εργαλείο για απομακρυσμένα εφεδρικά αντίγραφα. Είναι συνηθισμένο στα συστήματα UNIX και τα παρόμοια, εύκολο στην διαμόρφωση και στην χρήση με σενάρια. Αν και το r στο rsync σημαίνει "απομακρυσμένο" ("remote"), δεν χρειάζεται να το πάρετε τοις μετρητοίς. Η "απομακρυσμένη" συσκευή σας μπορεί απλά να είναι μια συσκευή αποθήκευσης USB ή ένα άλλο διαμέρισμα στο δίσκο σας, δεν χρειάζονται ξεχωριστοί υπολογιστές.


9.3.2. Ένα παράδειγμα: rsync προς συσκευή αποθήκευσης USB

Όπως συζητήσαμε στην Ενότητα 3.1.2.3, πρώτα θα πρέπει να προσαρτήσουμε τη συσκευή. Πιθανώς για το παρακάτω θα πρέπει να είστε υπερ-χρήστης (root):

root@theserver# mkdir /mnt/usbstore

root@theserver# mount -t vfat /dev/sda1 /mnt/usbstore
      

Note

Φιλικότητα προς το χρήστη

 

Όλο και περισσότερες διανομές δίνουν στους απλούς χρήστες πρόσβαση σε αφαιρούμενες συσκευές και προσαρτούν αυτόματα συσκευές USB, CD-ROMs κλπ

(Σε παλαιότερα συστήματα μπορεί να ..ΣτΜ) απαιτείται η εγκατάσταση υποστήριξης USB. Συμβουλευτείτε τον Οδηγό USB για βοήθεια. Ελέγξτε με τη dmesg ότι η /dev/sda1 είναι η σωστή συσκευή προσάρτησης.

Στη συνέχεια μπορείτε να ξεκινήσετε την εφεδρική αντιγραφή, λόγου χάρη για τον κατάλογο /home/karl:

karl@theserver:~> rsync -avg /home/karl /mnt/usbstore
      

Ως συνήθως, αναφερθείτε στις σελίδες τεκμηρίωσης για περισσότερα. (Υπάρχουν επίσης διαθέσιμες γραφικές διεπαφές της rsync, ΣτΜ).


9.4. Κρυπτογράφηση

9.4.1. Γενικά σχόλια

9.4.1.1. Γιατί κρυπτογράφηση δεδομένων;

Η κρυπτογράφηση είναι συνώνυμη της μυστικότητας. Στη περίπτωση των εφεδρικών αντιγράφων, η κρυπτογράφηση μπορεί αν είναι πολύ χρήσιμη, λόγου χάρη αν πρέπει να αφήσετε τα αντίγραφα σε μέρος που δεν μπορείτε να ελεγξετε τη πρόσβαση, όπως κάποιος διακομιστής.

Εκτός από αυτό, η κρυπτογράφηση μπορεί να εφαρμοστεί επίσης και στ E-mails: κανονικά, το mail δεν είναι κρυπτογραφημένο και συχνά στέλνεται δημόσια στο Διαδίκτυο. Αν όμως το mail σας είναι ιδιωτικό και περιέχει ευαίσθητη πληροφορία, καλύτερα να το κρυπτογραφήσετε.


9.4.1.2. GNU Privacy Guard (Φρουρός Ιδιωτικότητας)

Στα συστήματα Linux θα βρείτε το GnuPG, δηλαδή GNU Privacy Guard (Φρουρός Ιδιωτικότητας), που είναι ένα πακέτο συμβατό με τα εργαλεία PGP (Pretty Good Privacy) που είναι εμπορικά διαθέσιμα.

Σε αυτό το εγχειρίδιο συζυτούμε μόνο την απλούστερη χρήση των εργαλείων κρυπτογράφησης και θα δείχνουμε τι χρειάζεται για να παράγετε ένα κρυπτογραφικό κλειδί, καθώς και τη χρήση του για τη κρυπτογράφηση των δεδομένων σας, το οποία μετά μπορείτε να αποθηκεύσετε με ασφάλεια. Κατευθύνσεις για πιο προχωρημένη χρήση μπορεί να βρεθεί στις σελίδες τεκμηρίωσης των διαφόρων εντολών.


9.4.2. Δημιουργία κλειδιού

Πριν κρυπτογραφήσετε τα δεδομένα σας, πρέπει να δημιουργήσετε ένα ζεύγος κλειδιών. Το ζεύγος αποτελείται από ένα ιδιωτικό και ένα δημόσιο κλειδί. Μπορείτε να στείλετε το δημόσιο κλειδί σε όσους ενδιαφέρονται να σας στείλουν κρυπτογραφημένη αλληλογραφία. Αυτοί θα χρησιμοποιήσουν το δημόσιο κλειδί για να κρυπτογραφήσουν τα δεδομένα που θα σας στείλουν, τα οποία εσείς θα αποκρυπτογραφήσετε με το ιδιωτικό κλειδί σας. Πάντα πρέπει να κρατάτε μυστικό το ιδιωτικό κλειδί σας, ποτέ μην το δίνετε, αλλιώς κάποιος άλλος μπορεί να διαβάσει τα δεδομένα που είναι μόνο για σας. Για λόγους πρόσθετης ασφαλείας, το ιδιωτικό κλειδί προστατεύεται από κωδικό πρόσβασης. Το ζεύγος των κλειδιών δημιουργείται με αυτή την εντολή:

willy@ubuntu:~$ gpg --key-gen
gpg (GnuPG) 1.4.2.2; Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions.  See the file COPYING for details.

gpg: directory `/home/willy.gnupg' created
gpg: new configuration file `/home/willy/.gnupg/gpg.conf' created
gpg: WARNING: options in `/home/willy/.gnupg/gpg.conf' are not yet
 active during this run
gpg: keyring `/home/willy/.gnupg/secring.gpg' created
gpg: keyring `/home/willy/.gnupg/pubring.gpg' created
Please select what kind of key you want:
    (1) DSA and Elgamal (default)
    (2) DSA (sign only)
    (5) RSA (sign only)
Your selection? 1
DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n month
      <n>y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the
user ID from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Real name: Willy De Wandel
Email address: wdw@mvg.vl
Comment: Willem
You selected this USER-ID:
    "Willy De Wandel (Willem) <wdw@mvg.vl>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.
                                         
Passphrase:
      

Τώρα εισάγετε τον κωδικό πρόσβασης. Αυτός μπορεί να είναι μια φράση, όσο μεγαλύτερη τόσο καλύτερα, με τη προυπόθεση οτι θα μπορείτε να τη θυμάστε πάντα. Για επιβεβαίωση, θα πρέπει να ξανα-εισάγετε τον ίδιο κωδικό ξανά:

Τώρα που το ζεύγος των κλειδιών δημιουργείται από ένα πρόγραμμα που βασίζεται σε πρώτους αριθμούς και, μεταξύ άλλων παραγόντων, χρησιμοποιεί και πληροφορίες από τη τρέχουσα δραστηριότητα του συστήματος. Γι' αυτό είναι καλή ιδέα να ξεκινήσετε κάποιο πρόγραμμα, να μετακινήσετε το ποντίκι ή να εισάγετε τυχαίους χαρακτήρες στο παράθυρο τερματικού. Έτσι αυξάνετε τις πιθανότητες να δημιουργήσετε πιο σύνθετο κλειδί, άρα δυσκολότερα στην παραβίαση.


9.4.3. Σχετικά με το κλειδί σας

Όταν δημιουργηθεί το κλειδί σας, θα λάβετε ένα μήνυμα σχετικά με το δακτυλικό αποτύπωμα (fingerprint). Αυτό είναι μια ακολουθία 40 δεκαεξαδικών αριθμών, τόσο μεγάλη που είναι πολύ-πολύ δύσκολο να δημιουργηθεί δυο φορές η ίδια ακολουθία, σε οποιονδήποτε υπολογιστή. Μπορείτε να είστε αρκετά σίγουροι οτι πρόκειται για μοναδική ακολουθία. Η σύντομη μορφή αυτού του κλειδιού αποτελείται από τοπ όνομά σας, ακολουθούμενο από τους 8 τελευταίους δεκαεξαδικούς χαρακτήρες..

Μπορείτε να πάρετε πληροφορίες για το κλειδί σας, όπως παρακάτω:

willy@ubuntu:~$ gpg --list-keys
/home/willy/.gnupg/pubring.gpg
------------------------------
pub     1024D/BF5C3DBB 2006-08-08
uid                    Willy De Wandel (Willem) <wdw@mvg.vl>
sub     4096g/A3449CF7 2006-08-08
      

Η ταυτότητα κλειδιού (key ID) αυτού του κλειδιού είναι "BF5C3DBB". Μπορείτε να στείλετε το key ID και το όνομά σας σε ένα διακομιστή κλειδιών (key server), ώστε άλλοι χρήστες να μπορούν να πάρουν αυτή τη πληροφορία για να κρυπτογραφήσουν δεδομένα για να σας τα στείλουν. Εναλλακτικά, μπορείτε να στείλετε το δημόσιο κλειδί σας απ´ ευθείας σε αυτούς που θέλετε. Το δημόσιο μέρος του κλειδιού σας είναι η μακρά σειρά αριθμών που βλέπετε όταν χρησιμοποιείτε την επιλογή --export στην εντολή gpg:

gpg --export -a

Όμως, όσον αφορά αυτό το εγχειρίδιο, υποθέτουμε οτι χρειάζεστε το κλειδί για να κρυπτογραφήσετε μόνοι σας τα δεδομένα σας. Διαβάστε τις σελίδες τεκμηρίωσης της gpg για περισσότερες πληροφορίες.


9.4.4. Κρυπτογράφηση δεδομένων

Τώρα μπορείτε να κρυπτογραφήσετε μια αρχειοθήκη .tar ή μια συμπιεσμένη αρχειοθήκη, πριν την αποθηκεύσετε στο μέσο εφεδρικής αντιγραφής ή στο μεταφέρετε στον διακομιστή εφεδρικών αντιγράφων. Χρησιμοποιείστε την εντολή gpg ως εξής:

gpg -e -r (part of) uid archive

Η επιλογή -e λέει στη gpg να κρυπτογραφήσει, η επιλογή -r υποδεικνύει για ποιόν γίνεται η κρυπτογράφηση. Να έχετε υπ' όψη οτι μόνο ο χρήστης που το όνομά του ακολουθεί την επιλογή -r μπορεί να αποκρυπτογραφήσει ξανά υα δεδομένα. Ένα παράδειγμα:

willy@ubuntu:~$ gpg -e -r Willy /var/tmp/home-willy-20060808.tar
      

9.4.5. Αποκρυπτογράφηση δεδομένων

Με την επιλογή -d μπορείτε να αποκρυπτογραφήσετε δεδομένα που έχουν κρυπτογραφηθεί για σας. Τα δεδομένα θα εμφανιστοούν στην οθόνη σας αλλά ένα κρυπτογραφημένο αντίγραφο θα μείνει στο δίσκο σας. Έτσι, για να δείτε τα αποκρυπτογραφημένα δεδομένα με κάποιο πρόγραμμα πρέπει να τα σώσετε στο δίσκο. Αυτό γίνεται με την επιλογή -o της εντολής gpg:

willy@ubuntu:~$ gpg -d -o /var/tmp/home-willy-decrypt.tar /var/tmp/home-willy-20060808.tar.gpg

You need a passphrase to unlock the secret key for
user: "Willy De Wandel (Willem) <wdw@mvg.vl>"
4096 ELG-E key, ID A3449CF7, created 2006-08-08 (main key ID BF5C3DBB)

gpg: encrypted with 4096-bit ELG-E key, ID A3449CF7, created 2006-08-08
        "Willy De Wandel (Willem) <wdw@mvg.vl>"
      

Warning

Όχι κωδικός πρόσβασης = όχι δεδομένα

 

Αν δεν μπορείτε να θυμηθείτε τον κωδικό πρόσβασης, τα δεδομένα είναι χαμένα. Ούτε ο διαχειριστής συστήματος μπορεί να αποκρυπτογραφήσει. Γι' αυτό το λόγο μερικές φορές σημαντικά κλειδιά και κωδικοί πρόσβασης αποθηκεύονται ακόμη και σε τραπεζικές θυρίδες


9.5. Περίληψη

Εδώ είναι μια λίστα εντολών σχετικών με τα εφεδρικά αντίγραφα:

Πίνακας 9-1. Νέες εντολές στο κεφάλαιο 9: Εφεδρικά αντίγραφα

Εντολή

Σημασία

bzip2

Συμπίεση αρχέιων.

cdrecord

Εγγραφή δεδομένων σε CD.

dd

Αποτύπωση αρχείου

fdformat

Μορφοποίηση (χαμηλού επιπέδου) δισκέτας.

gpg

(Απο-)Κρυπτογράφηση δεδομένων.

gzip

(Απο-)Συμπίεση αρχείων.

mcopy

Αντιγραφή αρχείων MSDOS από/προς UNIX.

mdir

Εμφάνιση καταλόγου MSDOS.

mformat

Μορφοποίηση δισκέτας για σύστημα αρχείων MSDOS.

mkbootdisk

Δημιουργία αυτόνομης δισκέτας εκκίνησης του τρέχοντος συστήματος.

mount

Προσάρτηση συστήματος αρχείων (ενσωμάτωση στο υπάρχον σύστημα αρχείων συνδέοντάς το σε ένα σημείο προσάρτησης).

rsync

Συγχρονισμός περιεχομένου καταλόγων.

tar

Δημιουργία αρχειοθήκης σε ταινία, επίσης χρησιμοποιείται και για δημιουργία αρχειοθηκών σε δίσκους.

umount

Απο-προσάρτηση συστήματος αρχείων.


9.6. Ασκήσεις


Κεφάλαιο 10. Δικτύωση

Όταν φθάνουμε στη δικτύωση, το Linux έχει σημαντικό προβάδισμα, όχι μόνο επειδή η δικτύωση είναι στενά συνυφασμένη με το ίδιο το λειτουργικό σύστημα και υπάρχει μια μεγάλη γκάμα ελεύθερων εργαλείων και εφαρμογών, αλλά επίσης επειδή είναι ιδιαίτερα ανθεκτικό σε βαρύ επικοινωνιακό φόρτο, πράγμα που μπορεί να επιτευχθεί μόνο μετά από πολλά χρόνια εκσφαλμάτωσης και ελέγχου σαν Ανοικτό Λογισμικό.
Έχουν γραφεί ράφια ολόκληρα με πληροφορίες σχετικές με το Linux και τη δικτύωση, εδώ θα προσπαθήσουμε να δώσουμε μια επισκόπηση. Με τη συμπλήρωση αυτού του κεφαλαίου θα γνωρίζετε περισσότερα για

10.1. Επισκόπηση δικτύωσης

10.1.1. Το μοντέλο OSI

Ένα πρωτόκολλο, με απλά λόγια, είναι ένα σύνολο κανόνων επικοινωνίας.

Για να μεταφέρουμε δεδομένα στο δίκτυο, λόγου χάρη ένα E-mail από έναν υπολογιστή σε κάποιον άλλο στην άλλη άκρη του κόσμου, πρέπει να συνεργαστούν πολλοί υπολογιστές και πολλά διαφορετικά λογισμικά.

Όλο αυτό το υλικό και λογισμικό μπορεί να είναι ιδιαίτερα ετερογενές. Φανταστείτε το πρόγραμμα E-mail: μιλά με το λειτουργικό σύστημα του υπολογιστή, μέσω συγκεκριμένου πρωτοκόλλου, αλλά δεν μπορεί να μιλήσει με το υλικό. Χρειαζόμαστε ένα ειδικό πρόγραμμα στο λειτουργικό σύστημα που να εκτελεί αυτή τη λειτουργία. Με τη σειρά του, ο υπολογιστής πρέπει να μπορεί να επικοινωνεί με το δίκτυο μέσω τηλεφωνικής ή άλλης γραμμής. Και το υλικό επικοινωνίας μεταφέρει τα δεδομένα του E-mail από μια συσκευή σε άλλη, μέχρι τον υπολογιστή παραλαβής.

Όλοι αυτοί οι διαφορετικοί τύποι πρωτοκόλλων επικοινωνίας ομαδοποιούνται σε 7 επίπεδα, γνωστά ως το Open Systems Interconnection Reference Model, ή OSI Model για συντομία. Για εύκολη κατανόηση, το μοντέλο περιορίζεται σε ένα απλοποιημένο σύστημα 4 επιπέδων, όπως περιγράφεται παρακάτω:

Πίνακας 10-1. Το απλοποιημένο OSI Model

Όνομα επιπέδου

Πρωτόκολλα επιπέδου

Επίπεδο εφαρμογής

HTTP, DNS, SMTP, POP, ...

Επίπεδο μεταφοράς

TCP, UDP

Επίπεδο δικτύου

IP, IPv6

Επίπεδο προσπέλασης δικτύου

PPP, PPPoE, Ethernet

Κάθε επίπεδο μπορεί να ζητήσει τις υπηρεσίες του αμέσως κατώτερου επιπέδου, και να εξάγει υπηρεσίες στο αμέσως ανώτερο επίπεδο. Με άλλα λόγια επικοινωνεί μόνο με τα γειτονικά επίπεδα. Ας πάρουμε το παράδειγμα του E-mail: το εισάγετε μέσω του επιπέδου εφαρμογής. Στον υπολογιστή σας ταξιδεύει προς τα κάτω, μέσω του επιπέδου μεταφοράς και δικτύου. Ο υπολογιστής τελικά το αποστέλλει μέσω του επιπέδου προσπέλασης δικτύου. Μέσω αυτού του επιπέδου το μήνυμα ταξιδεύει στο κόσμο του διαδικτύου. Στον προορισμό, ο υπολογιστής παραλαμβάνει το μήνυμα μέσω του ίδιου επιπέδου, στη συνέχεια το μήνυμα ανέρχεται μέσω των επιπέδων δικτύου και μεταφοράς του υπολογιστή, και παρουσιάζεται στο χρήστη μέσω του επιπέδου εφαρμογής.

Note

Είναι αρκετά πιο περίπλοκο

 

Τόσο στη παραπάνω όσο και στις ενότητες που ακολουθούν θα συναντήσετε ορολογία δικτύου. Οι όροι αυτοί σας δίνουν απλά μιαν αφετηρία, για να βρείτε περισσότερες πληροφορίες.


10.1.2. Μερικά δημοφιλή δικτυακά πρωτόκολλα

Το Linux υποστηρίζει διάφορα δικτυακά πρωτόκολλα. Αναφέρουμε τα πιο σημαντικά:


10.1.2.1. TCP/IP

Το Πρωτόκολλο Ελέγχου Μεταφοράς (Transport Control Protocol, TCP) και το Πρωτόκολλο Διαδικτύου (Ιnternet Protocol, ΙΡ) είναι οι δύο δημοφιλέστεροι τρόποι επικοινωνίας στο Διαδίκτυο. Πολλές εφαρμογές, όπως ο περιηγητής και η εφαρμογή E-mail, έχουν κτιστεί πάνω σε αυτά τα πρωτόκολλα.

Πολύ απλά, το IP παρέχει μια λύση για την αποστολή πακέτων πληροφορίας από έναν υπολογιστή σε άλλον, ενώ το TCP διασφαλίζει οτι τα πακέτα τακτοποιούνται σε ροές, έτσι ώστε πακέτα διαφορετικών εφαρμογών δεν μπερδεύονται, και τα πακέτα στέλνονται και παραλαμβάνονται στη σωστή σειρά.

Ένα καλό σημείο εκκίνησης για να μάθουμε περισσότερα για το TCP και IP είναι τα ακόλουθα τεκμήρια:


10.1.2.2. TCP/IPv6

Κανείς δεν περίμενε την τόσο γρήγορη ανάπτυξη του Διαδικτύου. Το IP αποδείχτηκε οτι έχει μερικά μειονεκτήματα όταν στο δίκτυο υπάρχει ένας πολύ μεγάλος αριθμός υπολογιστών. Το πιο σημαντικό μειονέκτημα είναι η διαθεσιμότητα μιας μοναδικής διεύθυνσης για κάθε υπολογιστή του δικτύου. Έτσι, η έκδοση 6 σχεδιάστηκε για να καλύψει τις ανάγκες του σημερινού Διαδικτύου.

Δυστυχώς το IPv6 δεν υποστηρίζεται από όλες τις εφαρμογές και τις υπηρεσίες. Αυτή τη στιγμή είναι σε εξέλιξη μια διαδικασία μετάβασης προς το IPv6. Για μερικές εφαρμογές εφαρμόζεται το παλιό πρωτόκολλο, ενώ για άλλες εφαρμογές ισχύει η νέα έκδοση. Έτσι, όταν ελέγχετε τη διαμόρφωση του δικτύου σας, μερικές φορές μπορεί να διαπιστώσετε τη ταυτόχρονη εκτέλεση των δύο πρωτοκόλλων, αν και λαμβάνονται πολλά μέτρα έτσι ώστε τα δύο πρωτόκολλα να μην μπερδεύονται.

Περισσότερες πληροφορίες μπορούν να βρεθούν στα ακόλουθα τεκμήρια:


10.1.2.3. PPP, SLIP, PLIP, PPPoE

Ο πυρήνας του Linux έχει ενσωματωμένη υποστήριξη για τα πρωτόκολλα PPP (Point-to-Point-Protocol), SLIP (Serial Line IP), PLIP (Parallel Line IP) and (PPPoE) PPP-over-Ethernet. Το PPP είναι ο πιο δημοφιλής τρόπος σύνδεσης στο Διαδίκτυο μέσω τηλεφωνικής γραμμής, συνήθως μέσω ενός παρόχου (ISP-Internet Service Provider), αν και σε πυκνοκατοικημένες περιοχές συχνά αντικαθίσταται με το PPPoE, το πρωτόκολλο για συνδέσεις ADSL (Asymmetric Digital Subscriber Line)

Οι περισσότερες διανομές Linux παρέχουν εύχρηστα εργαλεία ρύθμισης των συνδέσεων με το Διαδίκτυο. Τα μόνα πράγματα που συνήθως χρειάζεστε για τη περίπτωση του PPP είναι μια τηλεφωνική γραμμή (και το απαραίτητα modem ΣτΜ.), καθώς το όνομα χρήστη και το κωδικό πρόσβασης για να συνδεθείτε με κάποιο πάροχο. Αυτά τα δεδομένα εισάγονται στη γραφική διεπαφή του εργαλείου διαμόρφωσης, το οποίο πιθανότατα θα ξεκινά και θα σταματά τη σύνδεση με την πάροχο.

(Στη πραγματικότητα τα πράγματα δεν είναι τόσο απλά, ιδίως όταν δεν έχετε ελέγξει τον τύπο του modem μέσω του οποίου θέλετε να συνδεθείτε. Πριν το αγοράσετε βεβαιωθείτε οτι συνεργάζεται με τη διανομή Linux που χρησιμοποιείτε, ιδίως αν πρόκειται για modem ενσωματωμένο στη μητρική πλακέτα. Επίσης, στη περίπτωση των συνδέσεων ADSL, χρειάζεται προσοχή στις συνδέσεις μέσω USB modem, λογω αντιστοίχων προβλημάτων. Πάντα να ελέγχετε για τη συμβατότητα των συσκευών. ΣτΜ.)


10.1.2.4. ISDN

Ο πυρήνας Linux έχει ενσωματωμένες δυνατότητες ISDN. Το Isdn4linux ελέγχει τις κάρτες ISDN και εξομοιώνει ένα modem με το σύνολο εντολών Hayes ("AT" εντολές). Οι δυνατότητες ξεκινούν από απλή σύνδεση τερματικού μέρχι πλήρη σύνδεση στο Διαδίκτυο.

Ελέγξτε τη τεκμηρίωση του συστήματος.


10.1.2.5. AppleTalk

Το Appletalk είναι το όνομα της ομάδας πρωτοκόλλων διαδικτύωσης της Apple. Επιτρέπει την ομότιμη (peer-to-peer) δικτύωση υπολογιστών και παρέχει βασικές λειτουργίες όπως διαμοιρασμό αρχείων και εκτυπωτών. Κάθε υπολογιστής μπορεί ταυτόχρονα να δρα ως πελάτης και διακομιστής, καθώς το απαραίτητο υλικό και λογισμικό είναι διαθέσιμα σε κάθε υπολογιστή Apple.

Το Linux παρέχει πλήρη δικτύωση AppleTalk. Το Netatalk είναι μια υλοποίηση του AppleTalk στο επίπεδο του πυρήνα, που αρχικά υπήρχε στα συστήματα BSD. Περιλαμβάνει υποστήριξη δρομολόγησης AppleTalk, υποστήριξη συστημάτων αρχείων UNIX και AFS με AppleShare, και υποστήριξη εκτυπωτών UNIX και AppleTalk.


10.1.2.6. SMB/NMB

Για τη συμβατότητα με τα περιβάλλοντα MS Windows, στα συστήματα UNIX μπορεί να εγκατασταθεί το πακέτο πρωτοκόλλων Samba, που περιλαμβάνει iυποστήριξη για τα πρωτόκολλα NMB και SMB. Το πρωτόκολλο SMB (Server Message Block, γνωστό και ως πρωτόκολλο Session Message Block, NetBIOS ή LanManager) χρησιμοποιείται στα MS Windows 3.11, NT, 95/98, 2000 και XP για το διαμοιρασμό δίσκων και εκτυπωτών.

Οι βασικές λειτουργίες του πακέτου Samba είναι: διαμοιρασμός οδηγών δίσκων Linux με υπολογιστές Windows, προσπέλαση διαμοιραζόμενων πόρων SMB από υπολογιστές Linux, διαμοιρασμός εκτυπωτών Linux με υπολογιστές Windows και το αντίστροφο.

Οι περισσότερες διανομές Linux παρέχουν ένα πακέτο samba, που εκτελεί τις περισσότερες ρυθμίσεις διακομιστή και ξεκινά εξ' ορισμού κατά την εκκίνηση τους δαίμονες smbd, τον διακομιστή Samba, και nmbd, τον διακομιστή ονομάτων NetBIOS. To Samba μπορεί να διαμορφωθεί μέσω γραφικής διεπαφής, ή διεπαφής ιστού και από τη γραμμή εντολών και μέσω αρχείων διαμόρφωσης. Οι δαίμονες κάνουν έναν υπολογιστή Linux να φαίνεται σαν υπολογιστής MS Windows. Σε ένα παράθυρο των MS Windows My Network Places/Network Neighbourhood; ο διαμοιρασμός αρχείων και εκτυπωτών από έναν υπολογιστή Linux θα είναι ακριβώς το ίδιο σαν νο διαμοιρασμό από υπολογιστή MS Windows.

Περισσότερες πληροφορίες μπορούν να βρεθούν στα τεκμήρια:


10.1.2.7. Άλλα πρωτόκολλα

Το Linux επίσης υποστηρίζει Amateur Radio, WAN (X25, Frame Relay, ATM), InfraRed και άλλες ασύρματες συνδέσεις, αλλά επειδή αυτές οι συνδέσεις απαιτούν ειδικό υλικό, δεν θα τις συζητήσουμε σε αυτί το εγχειρίδιο.


10.2. Διαμόρφωση και πληροφορίες δικτύου

10.2.1. Διαμόρφωση διεπαφών διτύου

Όλες οι μεγάλες, φιλικές προς το χρήστη διεπαφές παρέχουν γραφικές διεπαφές που επιτρέπουν την εύκολη σύνδεση του υπολογιστή σε ένα τοπικό δίκτυο, σε πάροχο υπηρεσιών Διαδικτύου ή για ασύρματη σύνδεση. Αυτά τα εργαλεία ξεκινούν είτε από τη γραμμή εντολών ή από το menu:

Η τεκμηρίωση του συστήματος παρέχει πολλές συμβουλές και πληροφορίες για τη χρήση αυτών των εργαλείων.

Πληροφορίες που θα πρέπει να δώσετε::


10.2.2. Αρχεία διαμόρφωσης δικτύου

Τα γραφικά εργαλεία τροποποιούν τα αρχεία διαμόρφωσης δικτύου, χρησιμοποιώντας λίγες συγκεκριμένες εντολές. Τα ακριβή ονόματα των αρχείων διαμόρφωσης και η θέση τους στο σύστημα αρχείων εξαρτάται κατά πολύ από τη διανομή και την έκδοση. Όμως, μερικά αρχεία διαμόρφωσης είναι κοινά σε όλα τα συστήματα UNIX:


10.2.2.1. /etc/hosts

Το αρχείο /etc/hosts περιέχει πάντα τη διεύθυνση IP του localhost, 127.0.0.1, που χρησιμοποιείται για δια-διεργασιακή επικοινωνία. Ποτέ μην αφαιρέσετε αυτή τη γραμμή! Μερικές φορές το αρχείο περιέχει και τις διευθύνσεις πρόσθετων υπολογιστών, που μπορούν να προσπελαστούν χωρίς τη χρήση εξωτερικής υπηρεσίας ονομασίας, δηλαδή διακομιστή DNS (Domain Name Service).

Να ένα δείγμα αρχείου hosts για ένα μικρό οικιακό δίκτυο:

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain   localhost
192.168.52.10   tux.mylan.com           tux
192.168.52.11   winxp.mylan.com         winxp

Διαβάστε περισσότερα στο man hosts.


10.2.2.2. /etc/resolv.conf

Το αρχείο /etc/resolv.conf καθορίζει την IP διεύθυνση του(ων) διακομιστή(ων) DNS, δείτε την Ενότητα 10.3.7. Το αρχείο περιέχει επίσης το όνομα (ή ονόματα) πεδίου σας:

search mylan.com
nameserver 193.134.20.4

Διαβάστε περισσότερα στις σελίδες τεκμηρίωσης resolv.conf.


10.2.2.3. /etc/nsswitch.conf

Το αρχείο /etc/nsswitch.conf ορίζει τη σειρά προσπέλασης σε διαφορετικές υπηρεσίες ονομασίας. Για τη χρήση του Διαδικτύου, είναι σημαντικό να υπάρχει το dns στη γραμμή "hosts":

[bob@tux ~] grep hosts /etc/nsswitch.conf
hosts:  files dns
    

Αυτό δίνει εντολή στον υπολογιστή σας να αναζητήσει ονόματα υπολογιστών και διευθύνσεις IP πρώτα στο αρχείο /etc/hosts, και να προσπελάσει ένα DNS server αν ο συγκεκριμένος υπολογιστής δεν εμφανίζεται στο τοπικό αρχείο hosts. Άλλες πιθανές υπηρεσίες ονομασίας είναι οι LDAP, NIS and NIS+.

Περισσότερα στο man nsswitch.conf.


10.2.3. Εντολές διαμόρφωσης δικτύου

10.2.3.1. Η εντολή ip

Τα γραφικά εργαλεία και σενάρια των διαφόρων διανομών είναι front-ends της εντολής ip (ή των ifconfig και route σε παλιότερα συστήματα) για την εμφάνιση και διαμόρφωση της δικτυακής διαμόρφωσης του πυρήνα.

Η εντολή ip χρησιμοποιείται για να αποδίδει διευθύνσεις IP στις διεπαφές, να ρυθμίζει τις διαδρομές των υπο-δικτύων, να εμφανίζει πληροφορίες σχετικές με το TCP/IP κλπ..

Οι ακόλουθες εντολές εμφανίζουν διευθύνσεις IP και πληροφορίες δρομολόγησης:

benny@home benny> ip addr show
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
    inet6 ::1/128 scope host 
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100
    link/ether 00:50:bf:7e:54:9a brd ff:ff:ff:ff:ff:ff
    inet 192.168.42.15/24 brd 192.168.42.255 scope global eth0
    inet6 fe80::250:bfff:fe7e:549a/10 scope link 

benny@home benny> ip route show
192.168.42.0/24 dev eth0  scope link 
127.0.0.0/8 dev lo  scope link 
default via 192.168.42.1 dev eth0 

      

Σημειώστε τα παρακάτω (εντολή ip addr show, ΣτΜ):

(Η εντολή ip route show δείχνει πληροφορίες δρομολόγησης, δηλαδή την προεπιλεγμένη διεύθυνση IP της πύλης με την οποία επικοινωνεί η διεπαφή δικτύου για την αποστολή/παραλαβή των πακέτων, ΣτΜ.).


10.2.3.2. Η εντολή ifconfig

Αν και η εντολή ip είναι ο πιο σύγχρονος τρόπος διαμόρφωσης ενός συστήματος Linux, η εντολή ifconfig είναι ακόμη πολύ δημοφιλής. Χωρίς κάποια επιλογή εμφανίζει τις πληροφορίες της διεπαφής δικτύου:

els@asus:~$ /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 00:50:70:31:2C:1
          inet addr:60.138.67.31  Bcast:66.255.255.255  Mask:255.255.255.192
          inet6 addr: fe80::250:70ff:fe31:2c14/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:31977764 errors:0 dropped:0 overruns:0 frame:0
          TX packets:51896866 errors:0 dropped:0 overruns:0 carrier:0
          collisions:802207 txqueuelen:1000
          RX bytes:2806974916 (2.6 GiB)  TX bytes:2874632613 (2.6 GiB)
          Interrupt:11 Base address:0xec00
                                                                                lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:765762 errors:0 dropped:0 overruns:0 frame:0
          TX packets:765762 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:624214573 (595.2 MiB)  TX bytes:624214573 (595.2 MiB)
      

Εδώ, επίσης, σημειώνουμε τις σημαντικότερες πλευρές διαμόρφωσης της διεπαφής:

Τόσο η ifconfig όσο και η ip εμφανίζουν λεπτομερέστερες πληροφορίες διαμόρφωσης και αρκετά στατιστικά για κάθε διεπαφή, καθώς επίσης αν είναι σε λειτουργία ("UP" and "RUNNING").

(Σημειώνουμε οτι οι εντολές δείχνουν περισσότερες πληροφορίες για τη διεπαφή που είναι ενεργή, ΣτΜ.).


10.2.3.3. Εντολές PCMCIA

Στους φορητούς υπολογιστές μερικές φορές απαιτείται η ενεργοποίηση πρόσθετων καρτών (για παράδειγμα σύνδεσης σε ασύρματα δίκτυα κινητής τηλεφωνίας ΣτΜ.) που εισάγονται μέσω θύρας PCMCIA. Αυτό επιτυγχάνεται μέσω της υπηρεσίας ελέγχου cardctl, ή pccardctl σε νεότερες διανομές.

Ένα παράδειγμα χρήσης:

cardctl insert

Τώρα η κάρτα μπορεί να διαμορφωθεί με τη βοήθεια της γραφικής διεπαφής ή της γραμμής εντολών. Πριν βγάλετε τη κάρτα, εισάγετε την εντολή:

cardctl eject

Όμως μια καλή διανομή πρέπει να περιλαμβάνει υποστήριξη PCMCIA στα εργαλεία διαμόρφωσης δικτύου, αποτρέποντας τους χρήστες από τη απ' ευθείας χρήση των εντολών PCMCIA.


10.2.3.4. Περισσότερες πληροφορίες

Η λεπτομερής συζήτηση για τη διαμόρφωση του δικτύου είναι έξω από τους στόχους αυτού του εγχειριδίου. Η κύρια πηγή πληροφόρησής σας θα είναι οι σελίδες τεκμηρίωσης της υπηρεσίας που θέλετε να εγκαταστήσετε. Για πρόσθετο διάβασμα:


10.2.4. Ονόματα διεπαφών δικτύου

Σε ένα σύστημα Linux, το όνομα συσκευής lo ή local loop (τοπικός βρόχος) συνδέεται με την εσωτερική διεύθυνση IP 127.0.0.1. Ο υπολογιστής θα ταλαιπωρηθεί πολύ αν αυτή η συσκευή δεν είναι παρούσα. Πρέπει να υπάρχει ακόμη και αν ο υπολογιστής δεν είναι στο δίκτυο.

Η πρώτη συσκευή Ethernet, eth0 είναι συνήθως η τυπική κάρτα δικτύου, που δείχνει στη διεύθυνση IP του τοπικού σας δικτύου. Οι κανονικοί υπολογιστές συνήθως έχουν μια μόνο διεπαφή δικτύου. Οι δρομολογητές, που συνδέουν υπο-δίκτυα μεταξύ τους, έχουν μια συσκευή δικτύου για κάθε υπο-δίκτυο που εξυπηρετούν.

Αν χρησιμοποιείτε modem to connect για να συνδεθείτε στο Διαδίκτυο, η συσκευή σας πιθανότατα ονομάζεται ppp0.

Υπάρχουν πολλά ακόμη ονόματα, λόγου χάρη για διεπαφές για Virtual Private Networks (VPNs). Επίσης πολλαπλές διεπαφές μπορεί να είναι ταυτόχρονα ενεργές, έτσι ώστε η έξοδος των εντολών ifconfig ή ip μπορεί να είναι αρκετά μεγάλη, αν δεν υπάρχουν ειδικές επιλογές. Ακόμη και πολλαπλές διεπαφές του ίδιου τύπου μπορεί να είναι ενεργές ταυτόχρονα. Σε αυτή τη περίπτωση αριθμούνται με τη σειρά: η πρώτη παίρνει την τιμή 0, η δεύτερη την τιμή 1, η τρίτη 2 κλπ. Αυτή η περίπτωση συναντάται σε πολλούς διακομιστές εφαρμογών, ή άλλα συστήματα που έχουν διαμόρφωση για περίπτωση βλάβης, σε δρομολογητές, τείχη ασφαλείας, κλπ.


10.2.5. Έλεγχος διαμόρφωσης υπολογιστή με τη netstat

Εκτός από την εντολή ip, η διαμόρφωση δικτύου μπορεί να εμφανιστεί και με την εντολή netstat που έχει πολλές επιλογές και είναι γενικά χρήσιμη σε συστήματα UNIX.

Οι πληροφορίες δρομολόγησης εμφανίζονται με την επιλογή -nr στην εντολή netstat:

bob:~> netstat -nr
Kernel IP routing table
Destination  Gateway      Genmask       Flags MSS Window irtt Iface
192.168.42.0 0.0.0.0      255.255.255.0 U      40 0         0 eth0
127.0.0.0    0.0.0.0      255.0.0.0     U      40 0         0 lo
0.0.0.0      192.168.42.1 0.0.0.0       UG     40 0         0 eth0
      

Πρόκειται για ένα τυπικό υπολογιστή σε ένα δίκτυο IP. Έχει μόνο μια συσκευή δικτύου, την eth0. Η διεπαφή lo είναι ο τοπικός βρόχος.

Note

Ο σύγχρονος τρόπος

 

Ο σύγχρονος τρόπος λήψης αυτής της πληροφορίας είναι με την εντολή ip (Δες παραπάνω για ένα ακόμη παράδειγμα ΣτΜ):

ip route show

Όταν ο υπολογιστής προσπαθεί να επικοινωνήσει με έναν υπολογιστή σε άλλο υπο-δίκτυο από το δικό του , πράγμα που σημειώνεται με τη γραμμή που ξεκινά με 0.0.0.0, θα στείλει τη σχετική αίτηση στον δρομολογητή (πύλη εξόδου, gateway, ΣτΜ.) με διεύθυνση IP 192.168.42.1, και θα το κάνει με τη κύρια διεπαφή του, eth0.

Υπολογιστές που βρίσκονται στο ίδιο δίκτυο, σύμφωνα μα τη γραμμή που ξεκινά με 192.168.42.0, θα προσεγγίζονται πάλι μέσω της κύριας διεπαφής, αλλά δεν απαιτείται δρομολογητής, τα δεδομένα απλά τοποθετούνται στο δίκτυο.

Η πληροφορία δρομολόγησης μπορεί να είναι πολύ πιο σύνθετη, με αρκετά ζεύγη διαφορετικών "Destination-Gateway" για σύνδεση σε διαφορετικά δίκτυα. Αν έχετε πρόσβαση σε ένα διακομιστή εφαρμογών δοκιμάστε να εμφανίσετε τις δικές του πληροφορίες δρομολόγησης.


10.2.6. Άλλοι υπολογιστές

Στα συστήματα Linux υπάρχει μια μεγάλη γκάμα εργαλείων για τη διαχείριση δικτύου και απομακρυσμένη διαχείριση συστημάτων. Τόσο η διανομή σας, όσο και οι γνωστοί ιστοτόποι ελεύθερου λογισμικού περιέχουν πολλά ενδιαφέροντα πακέτα. Εδώ δεν πρόκειται να τα συζητήσουμε γιατί θα ξεφύγουμε πολύ, γι' αυτό αναφερθείτε στη τεκμηρίωση του κάθε προγράμματος που σας ενδιαφέρει.

Θα συζητήσουμε μόνο τα συνήθη εργαλεία κειμένου για UNIX/Linux.


10.2.6.1. Η εντολή host

Για να εμφανίσετε πληροφορίες για υπολογιστές ή πεδία (domains), χρησιμοποιείστε την εντολή host:

[emmy@pc10 emmy]$ host www.eunet.be
www.eunet.be. has address 193.74.208.177

[emmy@pc10 emmy]$ host -t any eunet.be
eunet.be. SOA dns.eunet.be. hostmaster.Belgium.EU.net. 
  2002021300 28800 7200 604800 86400
eunet.be. mail is handled by 50 pophost.eunet.be.
eunet.be. name server ns.EU.net.
eunet.be. name server dns.eunet.be.
      

Παρόμοια πληροφορία μπορείτε να εμφανίσετε με την εντολή dig, η οποία δίνει και πρόσθετες πληροφορίες για τον τρόπο αποθήκευσης των πληροφοριών στο διακομιστή ονομάτων.


10.2.6.2. Η εντολή ping

Για να ελέγξετε αν ένα υπολογιστής λειτουργεί, χρησιμοποιείστε την εντολή ping. Αν το σύστημά σας στέλνει πολλά πακέτα, διακόπτετε τη ping μεCtrl+C (Μερικά συστήματα μπορεί για λόγους ασφαλείας να μην απαντούν στη ping και σε μερικές άλλες διερευνητικές εντολές ΣτΜ):

<[emmy@pc10 emmy]$ ping a.host.be 
PING a.host.be (1.2.8.3) from 80.20.84.26: 56(84) bytes of data.
64 bytes from a.host.be(1.2.8.3):icmp_seq=0 ttl=244 time=99.977msec
--- a.host.be ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/mdev = 99.977/99.977/99.977/0.000 ms
      

10.2.6.3. Η εντολή traceroute

Για να ελέγξουμε τη διαδρομή που ακολουθούν τα πακέτα από τον υπολογιστή μας προς κάποιον άλλο, χρησιμοποιούμε την εντολή traceroute:

[emmy@pc10 emmy]$ /usr/sbin/traceroute www.eunet.be
traceroute to www.eunet.be(193.74.208.177),30 hops max,38b packets
1 blob (10.0.0.1)  
       0.297ms  0.257ms  0.174ms
2 adsl-65.myprovider.be (217.136.111.1) 
       12.120ms 13.058ms 13.009ms
3 194.78.255.177 (194.78.255.177)  
       13.845ms 14.308ms 12.756ms
4 gigabitethernet2-2.intl2.gam.brussels.skynet.be (195.238.2.226)
       13.123ms 13.164ms 12.527ms
5 pecbru2.car.belbone.be (194.78.255.118) 
       16.336ms 13.889ms 13.028ms
6 ser-2-1-110-ias-be-vil-ar01.kpnbelgium.be (194.119.224.9)
       14.602ms 15.546ms 15.959ms
7 unknown-195-207-939.eunet.be (195.207.93.49) 
       16.514ms 17.661ms 18.889ms
8 S0-1-0.Leuven.Belgium.EU.net (195.207.129.1) 
       22.714ms 19.193ms 18.432ms
9 dukat.Belgium.EU.net (193.74.208.178) 22.758ms * 25.263ms
      

Σε μερικά συστήματα, η traceroute έχει μετονομαστεί σε tracepath.


10.2.6.4. Η εντολή whois

Αν θέλετε να μάθετε συγκεκριμένες πληροφορίες για κάποιο όνομα πεδίου (domain name) μπορείτε να ρωτήσετε με την εντολή whois, που ρωτά κάποιον από τους πολλούς διακομιστές whois, όπως παρακάτω:

[emmy@pc10 emmy]$ whois cnn.com
[whois.crsnic.net]

Whois Server Version 1.3

        $<--snap server message-->

   Domain Name: CNN.COM
   Registrar: NETWORK SOLUTIONS, INC.
   Whois Server: whois.networksolutions.com
   Referral URL: http://www.networksolutions.com
   Name Server: TWDNS-01.NS.AOL.COM
   Name Server: TWDNS-02.NS.AOL.COM
   Name Server: TWDNS-03.NS.AOL.COM
   Name Server: TWDNS-04.NS.AOL.COM
   Updated Date: 12-mar-2002
>>> Last update of whois database: Fri, 5 Apr 2002 05:04:55 EST <<<

The Registry database contains ONLY .COM, .NET, .ORG, .EDU domains
and Registrars.

[whois.networksolutions.com]

        $<--snap server message-->

Registrant:
Turner Broadcasting (CNN-DOM)
   1 CNN Center
   Atlanta, GA 30303

   Domain Name: CNN.COM

   Administrative Contact:
        $<--snap contactinfo-->   
   Technical Contact:
        $<--snap contactinfo-->   
   Billing Contact:
        $<--snap contactinfo-->
   Record last updated on 12-Mar-2002.
   Record expires on 23-Sep-2009.
   Record created on 22-Sep-1993.
   Database last updated on 4-Apr-2002 20:10:00 EST.

   Domain servers in listed order:

   TWDNS-01.NS.AOL.COM          149.174.213.151
   TWDNS-02.NS.AOL.COM          152.163.239.216
   TWDNS-03.NS.AOL.COM          205.188.146.88
   TWDNS-04.NS.AOL.COM          64.12.147.120
      

Για άλλα ονόματα πεδίου, εκτός από τα .com, .net, .org και .edu, ίσως χρειαστεί να καθορίσετε τον διακομιστή whois που θα χρησιμοποιήσετε::

whois domain.be@whois.dns.be


10.3. Εφαρμογές Διαδικτύου/Ενδοδικτύου

Το Linux είναι πολύ καλή πλατφόρμα για τη παροχή δικτυακών υπηρεσιών. Σ' αυτή την ενότητα θα προσπαθήσουμε να δώσουμε μια επισκόπηση των πιο γνωστών διακομιστών και εφαρμογών δικτύου.


10.3.1. Τύποι διακομιστών

10.3.1.1. Αυτόνομος διακομιστής

Η προσφορά μιας υπηρεσίας στους χρήστες μπορεί να προσεγγιστεί με δύο τρόπους. Ένας δαίμονας ή μια υπηρεσία μπορεί να εκτελεστεί αυτόνομα, ή μπορεί να εξαρτάται από την ενεργοποίηση μιας άλλης υπηρεσίας.

Οι υπηρεσίες δικτύων που χρησιμοποιούνται πολύ, συνήθως εκτελούνται αυτόνομα: είναι ανεξάρτητα προγράμματα δαίμονες που εκτελούνται συνεχώς. Ξεκινούν πιθανότατα κατά την εκκίνηση του συστήματος, και περιμένουν τα αιτήματα σε συγκεκριμένα σημεία σύνδεσης ή θύρες τις οποίες είναι ρυθμισμένα για να ακούν. Όταν έρχεται ένα αίτημα, υποβάλλεται σε επεξεργασία, και το ακρόαση συνεχίζεται μέχρι το επόμενο αίτημα. Ένας διακομιστής ιστού είναι ένα χαρακτηριστικό παράδειγμα: τον θέλετε να είναι διαθέσιμος 24 ώρες την ημέρα, και εάν είναι πάρα πολύ απασχολημένος πρέπει να δημιουργήσει περισσότερα στιγμιότυπα του εαυτού του για να εξυπηρετήσει τους ταυτόχρονους χρήστες. Άλλα παραδείγματα είναι οι μεγάλες αρχειοθήκες λογισμικού όπως το Sourceforge ή ο ο κατοπτρικός διακομσιτής Tucows, οι οποίοι πρέπει να χειριστούν χιλιάδες αιτήματα FTP ανά ημέρα.

Ένα παράδειγμα μιας αυτόνομης υπηρεσίας δικτύου στον υπολογιστή σας μπορεί να είναι το named (δαίμονας ονομάτων), ένας ενταμιευτής-διακομιστής ονομάτων. Οι αυτόνομες υπηρεσίες εκτελούν ξεχωριτή διεργασίας, που μπορείτε να ελέγξετε οποτεδήποτε χρησιμοποιώντας τη ps:

bob:~> ps auxw | grep named
named   908  0.0  1.0 14876 5108 ?   S  Mar14  0:07 named -u named
      

Εντούτοις, υπάρχουν μερικές υπηρεσίες που μπορείτε να χρησιμοποιήσετε στον υπολογιστή σας, ακόμα κι αν δεν υπάρχει καμία εκτελούμενη διεργασία διακομιστή για αυτές τις υπηρεσίες. Τέτοια παραδείγματα είναι η υπηρεσία FTP, η υπηρεσία ασφαλούς αντιγραφής ή η υπηρεσία finger. Αυτές οι υπηρεσίες έχουν τον δαίμονα Διαδικτύου (inetd) να ακούει γι' αυτές..


10.3.1.2. (x)inetd

Στον οικιακό υπολογιστή σας, τα πράγματα είναι συνήθως λίγο πιο ήρεμα. Μπορεί να έχετε ένα μικρό δίκτυο, λόγου χάριν, και μπορεί να μεταφέρετε τα αρχεία από ένα υπολογιστή σε άλλο κατά διαστήματα, χρησιμοποιώντας FTP ή Samba (για συνδεσιμότητα με υπολογιστές MS-Windows). Σ' αυτές τις περιπτώσεις, η εκκίνηση όλων αυτών των υπηρεσιών που χρειάζεστε περιστασιακά και η διαρκής εκτέλεσή τους θα ήταν μια απώλεια πόρων. Έτσι, στις μικρές εγκαταστάσεις, θα βρείτε τους απαραίτητους δαίμονες να εξαρτώνται από ένα κεντρικό πρόγραμμα, που ακούει σε όλους τις θύρες των υπηρεσιών για τις οποίες είναι αρμόδιο.

Αυτός ο υπερ-διακομιστής, ο δαίμονας υπηρεσιών Διαδικτύου, τίθεται σε λειτουργία στην εκκίνηση του συστήματος. Υπάρχουν δύο συνηθισμένες υλοποιήσεις: ο inetd και ο xinetd (ο εκτεταμένος δαίμονας υπηρεσιών Διαδικτύου). Σε κάθε σύστημα Linux εκτελείται ο ένας ή ο άλλος δαίμονας.

bob:~> ps -ef | grep inet
root  926   1 0 Mar14 ?   00:00:00 xinetd-ipv6 -stayalive -reuse \
-pidfile /var/run/xinetd.pid
      

Οι υπηρεσίες για τις οποίες είναι υπεύθυνος ο δαίμονας Διαδικτύου, παρατίθενται στο αρχείο διαμόρφωσής, /etc/inetd.conf, για το inetd, και στον κατάλογο /etc/xinetd.d για το xinetd. Υπηρεσίες που διαχειρίζεται συνήθως ο δαίμονας είναι ο διαμοιρασμός αρχείων και εκτυπωτών, τα SSH, FTP, Telnet, ο δαίμονας διαμόρφωσης Samba, οι υπηρεσίες talk και time.

Μόλις παραληφθεί ένα αίτημα σύνδεσης, ο κεντρικός διακομιστής θα αρχίσει ένα στιγμιότυπο του απαιτούμενου διακομιστή. Έτσι, στο παρακάτω παράδειγμα, όταν ο χρήστης bob αρχίζει μια σύνοδο FTP στον τοπικό υπολογιστή, εκτελείται ένας δαίμονας FTP όσο η σύνοδος είναι ενεργή:

bob:~> ps auxw | grep ftp
bob     793  0.1  0.2  3960 1076 pts/6    S    16:44   0:00 ncftp localhost
ftp     794  0.7  0.5  5588 2608 ?        SN   16:44   0:00 ftpd: 
localhost.localdomain: anonymous/bob@his.server.com: IDLE
      

Φυσικά, το ίδιο συμβαίνει όταν ανοίγετει συνδέσεις με απομακρυσμένους υπολογιστές: είτε ένας δαίμονας απαντά άμεσα, ή ένας απομακρυσμένος (x)inetd ξεκινά την υπηρεσία χρειάζεστε και την σταματά όταν εγκαταλείπετε.


10.3.2. Ταχυδρομείο

10.3.2.1. Διακομιστές

Το Sendmail είναι το τυπικό πρόγραμμα διακομιστή ή Πράκτορα Μεταφοράς Ταχυδρομείου για πλατφόρμες Unix. Είναι στιβαρό, επεκτάσιμο, και όταν διαμορφώνεται κατάλληλα με το σωστό υλικό, μπορεί να διαχειριστεί χιλιάδες χρήστες χωρίς πρόβλημα. Περισσότερες πληροφορίες για το τη διαμόρφωση του Sendmail περιλαμβάνονται στα πακέτα sendmail και sendmail-cf. Θα χρειαστεί να διαβάσετε τα αρχεία README και README.cf στο /usr/share/doc/sendmail. Επίσης χρήσιμη είναι η τεκμηρίωση στα man sendmail και man aliases.

Το Qmail είναι ένας άλλος διακομιστής ταχυδρομείου, που κερδίζει δημοτικότητα επειδή υποστηρίζει ότι είναι ασφαλέστερος από το Sendmail. Ενώ το Sendmail είναι ένα μονολιθικό πρόγραμμα, το Qmail αποτελείται από τα μικρότερα μέρη που αλληλεπιδρώντας και εξασφαλίζουν καλύτερη ασφάλεια. Το Postfix είναι ένας άλλος διακομιστής ταχυδρομείου ο οποίος είναι κερδίζει δημοτικότητα.

Αυτοί οι διακομιστές διαχειρίζονται ταχυδρομικέ λίστες, φίλτρα, ανίχνευση ιών και άλλα πολλά. Ελεύθεροι και εμπορικοί ανιχνευτές ιών είναι διαθέσιμοι για χρήση με Linux. Παραδείγματα του λογισμικού ταχυδρομικών λιστών είναι τα Mmailman, Listserv, Majordomo και EZmlm. Δείτε ιστοσελίδες του αγαπημένου σας ανιχνευτή ιών για πληροφορίες υποστήριξης πελατών και διακομιστών Linux. Τα Amavis και Spamassassin είναι ελεύθερες υλοποιήσεις ανιχνευτή ιών και ανιχνευτή ανεπιθύμητου ταχυδρομείου (spam).


10.3.2.2. Απομακρυσμένοι διακομιστές ταχυδρομείου

Τα δημοφιλέστερα πρωτόκολλα στο ταχυδρομείο πρόσβασης εξ αποστάσεως είναι τα POP3 και IMAP4. Τα IMAP και POP επιτρέπουν την offline λειτουργία, την απομακρυσμένη πρόσβαση στο νέο ταχυδρομείο, και οι δύο στηρίζονται σε έναν διακομιστή SMTP για να στείλουν την αλληλογραφία.

Ενώ το POP είναι ένα απλό πρωτόκολλο, εύκολο να εφαρμοστεί και το οποίο υποστηρίζεται από σχεδόν οποιοδήποτε πελάτη ταχυδρομείου, το IMAP προτιμάται επειδή:


10.3.2.3. Ταχυδρομικοί πράκτορες

Υπάρχουν πολλοί πελάτες ταχυδρομείου, διεπαφής κειμένου και γραφικών, θα αναφέρουμε λίγους από τους πιο συνηθισμένους. Διαλέξτε όποιον θέλετε.

Η εντολή mail του UNIX υπάρχει εδώ και πολλά χρόνια, ακόμη και πριν τη δικτύωση. Είναι μια απλή διεπαφή για αποστολή μηνυμάτων και αρχείων small fπρος άλλους χρήστες, που μπορούν να σώσουν το μήνυμά τους, να το ανακατευθύνουν, να απαντήσουν, κλπ.

Αν δεν χρησιμοποιείται πια σαν πελάτης, το πρόγραμμα mail είναι ακόμη χρήσιμο, για παράδειγμα για να στείλουμε το αποτέλεσμα μιας εντολής σε κάποιον:

mail <future.employer@whereIwant2work.com> < cv.txt

Ο αναγνώστης ταχυδομείου elm παρουσιάζει πολλές βελτιώσεις ως προς το mail, όπως και το pine (Pine Is Not ELM). Ο αναγνώστης ταχυδρομείου mutt είναι ακόμη πιο πρόσφατος και προσφέρει χαρακτηριστικά όπως νήματα.

Για αυτούς που προτιμούν γραφική διεπαφή για το ταχυδρομείο τους (και προβλήματα στον καρπό ή στον αγκώνα) υπάρχουν εκατοντάδες επιλογές πρακτόρων. Οι πιο δημοφιλείς στους νέους χρήστες είναι ο Mozilla Mail/Thunderbird, που έχει εύκολη διαμόρφωση επιλογών αντι-spam, και το Evolution, που μοιάζει πολύ με το MS-Outlook. Το Kmail είναι δημοφιλές στους χρήστες KDE.

Εικόνα 10-1. Ανάγνωση ταχυδρομείου και ειδήσεων με το Evolution

Επίσης υπάρχουν διαθέσιμες δεκάδες εφαρμογές web mail, όπως τα Squirrelmail, (Horde ΣτΜ.), Yahoo! mail, gmail του Google και Hotmail.

Μια επισκόπηση είναι διαθέσιμη στο Linux Mail User HOWTO.

Οι περισσότερες διανομές Linux περιλαμβάνουν το fetchmail, μια υπηρεσία ανάκτησης και προώθησης ταχυδρομείου. Προσκομίζει το ταχυδρομείο από τους απομακρυσμένους διακομιστές ταχυδρρομείου (POP, IMAP και μερικούς άλλους) και το προωθείι στο τοπικό σύστημα παράδοσης.. Στη συνέχεια μπορείτε να χειριστείτε το ανακτημένο ταχυδρομείο χρησιμοποιώντας τους κανονικούς πελάτες ταχυδρομείου. Το fetchmail μπορεί να δουλεύει σαν δάιμονας για να ελέγχει διαδοχικά ένα ή περισσότερα συστήματα ανά καθορισμένο χρονικό διάστημα. Παραδείγματα πληροφοριών και χρήσης μπορούν να βρεθούν στις σελίδες τεκμηρίωσης, και στο κατάλογο /usr/share/doc/fetchmail[-<version>]. που περιέχει μια πλήρη λίστα χαρακτηριστικών και ένα FAQ για αρχαρίους

Το φίλτρο procmail μπορεί να χρησιμοποιηθεί για το φιλτράρισμα του εισερχόμενου ταχυδρομείου, να δημιουργήσει τους ταχυδρομικές λίστες, να προ-επεξεργαστεί το ταχυδρομείο, να προωθήσει επιλεκτικά ταχυδρομείο, κλπ. Το συνοδευτικό πρόγραμμα formail, μεταξύ των άλλων, επιτρέπει την παραγωγή αυτόματων απαντήσεων και τον διαχωρισμό των ταχυδρομικών θυρίδων. Το procmail λειτουργεί εδώ και αρκετά χρόνια σε συστήματα Unix και Linux και είναι ένα πολύ στιβαρό σύστημα, σχεδιασμένο να εργάζεται και στις χειρότερες συνθήκες. Περισσότερες πληροφορίες μπορούν να βρεθούν στο κατάλογο /usr/share/doc/procmail[-<version>]και στις σελίδες τεμκηρίωσης.



10.3.3. Ιστός

10.3.3.1. Ο διακομιστής Ιστού Apache

Ο Apache είναι κατά πολύ ο δημοφιλέστερος διακομιστής Ιστού, που χρησιμοποιείται σε περισσότερους από τους μισούς διακομιστές Ιστού στο Διαδίκτυο. Οι περισσότερες διανομές Linux περιλαμβάνουν τον Apache. Ανάμεσα στα πλεονεκτήματα του Apache είναι ο τμηματικός σχεδιασμός, η υποστήριξη SSL, η σταθερότητα και η ταχύτητα. Με κατάλληλο υλικό και διαμόρφωση μπορεί να υποστηρίξει ακόμα και τα υψηλότερα φορτία.

Στα συστήματα Linux, η διαμόρφωση διακομιστή βρίσκεται συνήθως στο κατάλογο /etc/httpd. Το σημαντικότερο αρχείο διαμόρφωσης είναι το httpd.conf που είναι αρκετά ευεξήγητο. Εάν χρειαστείτε τη βοήθεια, μπορείτε να την βρείτε στη τεκμηρίωση του httpd ή στον ιστοτόπο του Apache.


10.3.3.2. Περιηγητές Ιστού

Στη πλατφόρμα του Linux υπάρχουν διάφοροι περιηγητές Ιστού, ελεύθεροι και εμπορικοί. Ο πλοηγός Netscape ως η μόνη συμπαθής επιλογή είναι από καιρό παρελθόν, δεδομένου ότι το Mozilla/Firefox προσφέρει μια ανταγωνιστική εναλλακτική λύση που εκτελείτται σε πολλά άλλα λειτουργικά συστήματα, όπως το MS-Windows και MacOS Χ επίσης.

Ο Amaya είναι ο περιηγητής του W3C. Ο Opera είναι ένας εμπορικός περιηγητής, συμπαγής και γρήγορος. Πολλοί διαχειριστές επιφάνειας εργασίας προσφέρουν χαρακτηριστικά περιήγησης Ιστού, στους διαχειριστές αρχείων τους, όπως ο nautilus.(του Gnome, και ο konqueror του KDE, ΣτΜ).

Μεταξύ των περιηγητών κειμένου οι δημοφιλέστεροι είναι οι lynx και links. Ίσως να χρειαστεί να ορίσετε διακομιστές διαμεσολάβησης (proxy servers) στο φλοιό σας, ρυθμίζοντας τις αντίστοιχες μεταβλητές. Οι περιηγητές κειμένου είναι γρήγοροι και εύχρηστοι ότνα δεν υπάρχει γραφικό περιβάλλον, για παράδειγμα μέσα σε σενάρια φλοιού.


10.3.3.3. Διακομιστές διαμεσολάβησης (Proxy servers)

10.3.3.3.1. Τι είναι διακομιστής διαμεσολάβησης;

Οι επιχειρήσεις και οι οργανισμοί συχνά θέλουν τους χρήστες τους να χρησιμοποιούν διακομιστή διαμεσολάβησης. Ειδικά σε περιβάλλοντα με πολλούς χρήστες, ένας διακομιστής διαμεσολάβησης επιτρέπει την ταχύτερη φόρτωση ιστοσελίδων. Ο διακομιστής διαμεσολάβησης αποθηκεύει ιστοσελίδες. Όταν ένας χρήστης ζητά μια ιστοσελίδα που έχει ζητηθεί ήδη, ο διακομιστής διαμεσολάβησης δίνει την σελίδα στο χρήστη άμεσα, έτσι ώστε να μην ξαναπάρει από το Διαδίκτυο, πράγμα που θα απαιτούσε περισσότερο χρόνο. Φυσικά, μπορούν να ληφθούν μέτρα έτσι ώστε ο διακομιστής διαμεσολάβησης να κάνει έναν γρήγορο έλεγχο και να προσφέρει πάντα την πιο πρόσφατη έκδοση μιας σελίδας. Σε μερικά περιβάλλοντα, η χρήση του διακομιστή διαμεσολάβησης είναι υποχρεωτική, σε άλλα περιβάλλοντα μπορείτε να έχετε την επιλογή.


10.3.3.3.2. Διαμόρφωση διαμεσολαβητή

Αν έχετε το όνομα και τη θύρα του διακομιστή διαμεσολάβησης, πρέπει να είναι μάλλον προφανές πώς θα εισάγετε αυτή τη πληροφορία στο περιηγητή σας. Όμως, πολλές εφαρμογές (από την εντολή γραμμής) για να λειτουργήσουν σωστά εξαρτώνται από τις μεταβλητές http_proxy και ftp_proxy. Για ευκολία μπορείτε να προσθέσετε στο αρχείο σας ~/.bashrc:

export http_proxy=http://username:password@proxy_server_name:port_number

Για παράδειγμα:

export http_proxy=http://willy:Appelsi3ntj3@proxy:80

Αν δεν χρειάζεται να δώσετε όνομα χρήστη και κωδικό πρόσβασης, απλά αφαιρέστε το κείμενο από τo "//" μέχρι το "@" (συμπεριλαμβανομένου του τελευταίου).


10.3.4. Πρωτόκολλα μεταφοράς αρχείων (FTP)

10.3.4.1. Διακομιστές FTP

Σε ένα σύστημα Linux, ο διακομιστής FTP τυπικά εκτελείται από το xinetd, χρησιμοποιώντας τον διακομιστή WU-ftpd, αν και σε συστήματα με μεγάλη κίνηση FTP, ο διακομιστής μπορεί να διαμορφωθεί ως αυτόνομος. Δείτε τις ασκήσεις.

Άλλοι διακομιστές FTP είναι, μεταξύ άλλων, οι vsftpd, Ncftpd και Proftpd. (Επίσης υπάρχουν και γραφικές διεπαφές για διακομιστές FTP, όπως το Net2FTP, ΣτΜ.).

Οι περισσότερες διανομές Linux περιέχουν και το πακέτο anonftp, που εγκαθιστά ένα δένδρο διακομιστή ανώνυμου FTP και τα συνοδευτικά αρχεία ρύθμισης.


10.3.4.2. Πελάτες FTP

Οι περισσότερες διανομές Linux περιλαμβάνουν το ncftp, μια βελτιωμένη έκδοση της κοινής εντολής UNIX ftp, η οποία είναι γνωστή και στους χρήστες Windows. Το πρόγραμμα ncftp διαθέτει επιπλέον χαρακτηριστικά όπως μιαομορφότερη και πιο κατανοητή διεπαφή χρήστη, αυτόματη συμπλήρωση ονομάτων αρχείων, λειτουργίες προσάρτησης και συνέχισης, σημείωση αρχείων, διαχείριση συνόδων κλπ.:

thomas:~> ncftp blob
NcFTP 3.0.3 (April 15, 2001) by Mike Gleason (ncftp@ncftp.com).
Connecting to blob...
blob.some.net FTP server (Version wu-2.6.1-20) ready.
Logging in...
Guest login ok, access restrictions apply.
Logged in to blob.
ncftp / > help
Commands may be abbreviated.  'help showall' shows hidden and 
unsupported commands.  
'help <command>' gives a brief description of <command>.

ascii      cat      help      lpage     open     quote    site     
bgget      cd       jobs      lpwd      page     rename   type     
bgput      chmod    lcd       lrename   pdir     rhelp    umask    
bgstart    close    lchmod    lrm       pls      rm       version  
binary     debug    lls       lrmdir    put      rmdir      
bookmark   dir      lmkdir    ls        pwd      set        
bookmarks  get      lookup    mkdir     quit     show       
ncftp / > 

Εξαιρετική βοήθεια με πολλά παραδείγματα βρίσκονται στις σελίδες τεκμηρίωσης. Και πάλι, υπάρχουν διαθέσιμες πολλές εφαρμογές με γραφική διεπαφή (όπως, για παράδειγμα το gftp. Επίσης, οι περισσότεροι περιηγητές Ιστού, όπως οι Mozilla/Firefox, και οι γραφικοί διαχειριστές αρχείων, όπως οι nautilus και konqueror, ενσωματώνουν λειτουργίες πελάτη FTP, ΣτΜ.).

Warning

Το FTP είναι ανασφαλές!

 

Μην χρησιμοποιείτε το FTP για μη-ανώνυμες συνδέσεις εκτός αν ξέρετε τι κάνετε. Το όνομα και κωδικός πρόσβασης μπορεί να υποκλαπούν από κακοπροαίρετους χρήστες του δικτύου! Καλύτερα να χρησιμοποιείτε το ασφαλές FTP, το πρόγραμμα sftp βρίσκεται στο πακέτο του Ασφαλού; Φλοιού (Secure Shell, ssh), δείτε την Ενότητα 10.4.4.4.


10.3.5. Συζήτηση και συνεδρίαση

Υπάρχουν διάφοροι πελάτες και συστήματα διαθέσιμα σε κάθε διανομή, που αντικαθιστούν το παλιό IRC που βασίζεται σε κείμενο. Μια σύντομη και ατελής λίστα δημοφιλών προγραμμάτων:


10.3.6. Υπηρεσίες ειδήσεων

Η διαχείριση ενός διακομιστή Usenet απαιτεί μεγάλη εμπειρία και λεπτές ρυθμίσεις, γι´ αυτό διαβάστε την ιστοσελίδα INN για περισσότερες πληροφορίες.

Υπάρχουν μερικές ενδιαφέρουσες ομάδες ειδήσεων στην ιεραρχία comp.* , που μπορείτε να τις παρακολουθείτε με μια ποικιλία εργαλείων, γραφικών και κειμένου. Πολλοί πελάτες ταχυδρομείου υποστηρίζουν επίσης και ανάγνωση ειδήσεων. Αν ενδιαφέρεστε για εργαλεία κειμένου ελέγξτε τη διανομή σας ή τους ιστοτόπους Ανοικτού Κώδικα για πελάτες όπως οι tin, slrnn και mutt. Στα γραφικά εργαλεία μπορείτε να μεταφορτώσετε το Mozilla/Thunderbird ή κάποιο άλλο γραφικό πελάτη ταχυδρομείου.

Το Deja.com, του Google, (τώρα πλέον Google Groups, ΣτΜ) sδιατηρεί μια αρχειοθήκη όλων των ομάδων ειδήσεων, στην οποία μπορείτε να κάνετε διάφορες αναζητήσεις. Πρόκειται για ένα πανίσχυρο εργαλείο για λήψη βοήθειας: υπάρχουν πολλές πιθανότητες ότι κάποιος συνάντησε το πρόβλημά σας, βρήκε μια λύση και την ανάρτησε σε κάποια ομάδα ειδήσεων.


10.3.7. Το Σύστημα Ονομάτων Πεδίων (DNS)

Όλες αυτές οι εφαρμογές απαιτούν υπηρεσίες DNS για να ταυτίσουν διευθύνσεις IP με ονόματα υπολογιστών και αντίστροφα. Ένας διακομιστής DNS δεν γνωρίζει όλες τις διευθύνσεις IP του κόσμου, αλλά δικτυώνεται με άλλους διακομιστές DNS που μπορούν να ρωτήσουν για την άγνωστη διέυθυνση. Τα περισσότερα συστήματα UNIX μπορούν να εκτελέσουν το named, που είναι τμήμα του πακέτου BIND (Berkeley Internet Name Domain) και διανέμεται από το Internet Software Consortium. Μπορεί να εκτελεστεί ως αυτοδύναμος ενταμιευτής nameserver, πράγμα που γίνεται σε συστήματα Linux για να επιταχύνει την πρόσβαση στο δίκτυο.

Το κύριο αρχείο διαμόρφωσης είναι το /etc/resolv.conf, όπου ορίζονται οι διακομιστές DNS, η σειρά προσπέλασης και τα πεδία αναζήτησης:

search somewhere.org
nameserver 192.168.42.1
nameserver 193.74.208.137

Περισσότερες πληροφορίες μπορούν να βρεθούν στις σελίδες τεκμηρίωσης του named, στα αρχεία /usr/share/doc/bind[-<version>] και στον ιστοτόπο του Bind project. Το DNS HOWTO καλύπτει τη χρήση του BIND ως διακομιστή DNS.


10.3.8. DHCP

Το DHCP είναι το Πρωτόκολλο Δυναμικής Διαμόρφωσης Υπολογιστών (Dynamic Host Configuration Protocol), που σταδιακά αντικαθιστά το παλιό καλό bootp iσε μεγαλύτερα περιβάλλοντα. Χρησιμοποιείται για τον έλεγχο ζωτικών δικτυακών παραμέτρων όπως διευθύνσεις IP, διακομιστές DNS των υπολογιστών ενός δικτύου. Το DHCP είναι υπερσύνολο του bootp. Για να διαμορφώσετε ένα διακομιστή DHCP, θα πρέπει να διαβάσετε το HOWTO.

Οι πελάτες DHCP συνήθως διαμορφώνονται κατά την εγκατάσταση ή κατά την εκκίνηση/σύνδεση με τη βοήθεια μιας γραφικής διεπαφής που διαμορφώνει τον δαίμονα πελάτη του DHCP, dhcpd. Αν χρειάζεται να διαμορφώσετε τον υπολογιστή σας ως πελάτη DHCP μελετήστε τις σχετικές σελίδες τεκμηρίωσης.


10.3.9. Υπηρεσίες ταυτοποίησης

10.3.9.1. Παραδοσιακή υπηρεσία

Παραδοσιακά, οι χρήστες ταυτοποιούνται τοπικά, με βάση τη πληροφορία που βρίσκεται στα αρχεία /etc/passwd και /etc/shadow σε κάθε σύστημα. Ακόμη και αν το σύστημα χρησιμοποιεί δικτυακή υπηρεσία ταυτοποίησης, τα τοπικά αρχεία είναι πάντοτε διαθέσιμα για διαχειριστική χρήση, όπως ο λογαριασμός χρήστη, οι λογαριασμοί δαιμόνων και συχνά πρόσθετοι λογαριασμοί προγραμμάτων.

Αυτά τα αρχεία είναι συχνά οι πρώτοι υποψήφιοι για παραβίαση από τους hackers, γι' αυτό βεβαιωθείτε οτι οι άδειες και τα δικαιώματα πρόσβασης είναι όσο αυστηρότερα γίνεται:

bob:~> ls -l /etc/passwd /etc/shadow
-rw-r--r--    1 root     root         1803 Mar 10 13:08 /etc/passwd
-r--------    1 root     root         1116 Mar 10 13:08 /etc/shadow
      

10.3.9.2. PAM

Το Linux μπορεί να χρησιμοποιήσει το PAM (Pluggable Authentication Module), μια ευέλικτη μέθοδο ταυτοποίησης στο UNIX. Πλεονεκτήματα του PAM:

Ο κατάλογος /etc/pam.d περιέχει τα αρχεία διαμόρφωσης του PAM (παλιότερα ήταν /etc/pam.conf). Κάθε εφαρμογή ή υπηρεσία έχει το δικό της αρχείο. Κάθε γραμμή αρχείου έχει τέσσερα στοιχεία:

Τα αρχεία Shadow password ανιχνεύονται αυτόματα από το PAM.

Περισσότερες πληροφορίες θα βρείτε στις σελίδες τεκμηρίωσης του pam ή στον ιστοτόπο του Linux-PAM project.


10.3.9.3. LDAP

Το LDAP (Lightweight Directory Access Protocol) είναι ένα σύστημα πελάτη-διακομιστή για τη πρόσβαση σε καθολικές ή τοπικές υπηρεσίες καταλόγου σε ένα δίκτυο.. Στο Linux, χρησιμοποιείται η υλοποίηση OpenLDAP. Περιλαμβάνει το slapd, έναν αυτόνομο διακομιστή, το slurpd, έναν αυτόνομο διακομιστή ομοιοτυπίας (replication) LDAP; lβιβλιοθήκες που υλοποιούν το πρωτόκολλο LDAP και μια σειρά υπηρεσίες, εργαλεία και υποδειγματικούς πελάτες.

Το κύριο όφελος του LDAP είναι η συγκέντρωση ορισμένων τύπων πληροφοριών μέσα στον οργανισμόη σας. Παραδείγματος χάριν, όλοι οι διαφορετικοί κατάλογοι χρηστών μέσα στον οργανισμό σας μπορούν να συγχωνευθούν σε έναν κατάλογο LDAP. Αυτός ο κατάλογος μπορεί να ερωτηθεί από οποιεσδήποτε LDAP εφαρμογές που χρειάζονται αυτές τις πληροφορίες. Μπορεί επίσης να προσπελαστεί από χρήστες που χρειάζονται τις πληροφορίες καταλόγου.

Άλλα οφέλη του LDAP ή του X.500 Lite (Χ.500 είναι ο κωδικός του αρχικού πρωτοκόλλου υπηρεσίας καταλόγου, ΣτΜ.) περιλαμβάνουν την ευκολία εφαρμογής του (συγκρινόμενο με το αρχικό X.500) και το καλά καθορισμένη διεπαφή προγραμματισμού (API), που σημαίνει ότι ο αριθμός εφαρμογών και πυλών LDAP αναμένεται να αυξηθεί στο μέλλον.

Στην αρνητική πλευρά, εάν θέλετε να χρησιμοποιήσετε LDAP, θα χρειαστείτε τις LDAP εφαρμογές ή τη δυνατότητα να χρησιμοποιήσετε τις πύλες LDAP. Ενώ η χρήση του LDAP αναμένεται να αυξηθεί, σήμερα δεν υπάρχουν πάρα πολλές LDAP εφαρμογές διαθέσιμες για Linux. Επίσης, ενώ το LDAP υποστηρίζει κάποιο έλεγχο πρόσβασης, δεν υποστηρίζει τόσο πολλά χαρακτηριστικά ασφάλειας όπως το X.500.

Δεδομένου ότι το LDAP είναι ένα ανοικτό και διαμορφώσιμο πρωτόκολλο, μπορεί να χρησιμοποιηθεί για να αποθηκεύει σχεδόν οποιοδήποτε είδος πληροφοριών με μια ιδιαίτερη οργανωτική δομή. Τα κοινά παραδείγματα είναι η διαδικασία αναζήτησης διευθύνσεων ταχυδρομείου, η κεντρική ταυτοποίηση σε συνδυασμό με το PAM, τηλεφωνικοί κατάλογοι και βάσεις δεδομένων διαμόρφωσης υπολογιστών.

Δείτε τις πληροφορίες για το σύστημά σας και τις σελίδες τεκμηρίωσης για λεπτομέρειες των σχετικών εντολών όπως ldapmodify και ldapsearch. Περισσότερες πληροφορίες μπορούν να βρεθούν στο LDAP Linux HOWTO, το οποίο συζητά την εγκατάσταση, τη διαμόρφωση, την διαχείριση και τη συντήρηση ενός διακομιστή LDAP σε Linux. Ο συγγραφέας αυτού του εγχειριδίου έγραψε επίσης το LDAP Operations HOWTO, όπου περιγράφονται τα βασικά που πρέπει να ξέρει κάποιος για τη διαχείριση LDAP, τις διαδικασίες και την ολοκλήρωση των υπηρεσιών.


10.4. Απομακρυσμένη εκτέλεση εφαρμογών

10.4.1. Εισαγωγή

Υπάρχουν ορισμένοι διαφορετικοί τρόποι να εκτελέσετε εντολές ή προγράμματα σε έναν απομακρυσμένο υπολογιστή και να έχετε την έξοδο, σε κείμενο ή γραφικά, πίσω στο σταθμό εργασίας σας. Οι συνδέσεις μπορεί να είναι ασφαλείς ή ανασφαλείς. Αν και φυσικά είναι καλό να χρησιμοποιείτε ασφαλείς συνδέσεις και να μην στέλνετε το κωδικό πρόσβασης σας στο δίκτυο χωρίς κρυπτογράφηση, θα συζητήσουμε μερικές πρακτικές εφαρμογές παλιότερων (ανασφαλών) μηχανισμών, γιατί παραμένουν χρήσιμες σε ένα σύγχρονο δικτυωμένο περιβάλλον, όπως η εκσφαλμάτωση ή εκτέλεση ειδικών εφαρμογών.


10.4.2. Rsh, rlogin και telnet

Οι εντολές rlogin και rsh για απομακρυσμένη σύνδεση και εκτέλεση εντολών κληρονομήθηκαν από το UNIX. Αν και χρησιμοποιούνται σπάνια επειδή είναι εντελώς ανασφαλή, ακόμη διατίθενται σχεδόν με κάθε διανομή Linux για συμαβτότητα με παλιές εφαρμογές UNIX.

Το telnet, από την άλλη πλευρά, ακόμη χρησιμοποιείται συχνά, από διαχειριστές συστημάτων και δικτύων. Το telnet είναι ένα από τα ισχυρότερα εργαλεία για απομακρυσμένη πρόσβαση σε αρχεία και απομακρυσμένη διαχείριση, επιτρέποντας συνδέσεις από οπουδήποτε στο Διαδίκτυο. Σε συνδυασμό με ένα διακομιστή X, επιτρέπει την τοπική εμφάνιση απομακρυσμένων γραφικών εφαρμογών. Δεν υπάρχει διαφορά μεταξύ απομακρυσμένης και τοπικής εργασίας.

Επειδή η όλη σύνδεση δεν είναι κρυπτογραφημένη, το telnet αφήνει πολλά κενά ασφάλειας. Για κανονική απομακρυσμένη εκτέλεση προγραμμάτων, είναι προτιμότερη η χρήση του Ασφαλούς Φλοιού (Secure Shell), ssh. Η ασφαλής μέθοδος θα συζητηθεί αργότερα σε αυτή την ενότητα.

Παρόλα αυτά, το telnet ακόμη χρησιμοποιείται σε αρκετές περιπτώσεις. Παρακάτω δίνονται μερικά παραδείγματα όπου ένας διακομιστής ταχυδρομείου και ένας διακομιστής Ιστού ελέγχονται για απαντήσεις:

Έλεγχος λειτουργίας διακομιστή ταχυδρομείου (πρωτόκολλο SMTP, ΣτΜ.):

[jimmy@blob ~] telnet mailserver 25
Trying 192.168.42.1...
Connected to mailserver.
Escape character is '^]'.
220 m1.some.net ESMTP Sendmail 8.11.6/8.11.6; 200302281626
ehlo some.net
250-m1.some.net Hello blob.some.net [10.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-SIZE
250-DSN
250-ONEX
250-ETRN
250-XUSR
250 HELP
mail from: jimmy@some.net
250 2.1.0 jimmy@some.net... Sender ok
rcpt to: davy@some.net
250 2.1.5 davy@some.net... Recipient ok
data
354 Enter mail, end with "." on a line by itself
test
.
250 2.0.0 g2MA1R619237 Message accepted for delivery
quit
221 2.0.0 m1.some.net closing connection
Connection closed by foreign host.
      

Έλεγχος βασικών λειτουργιών ενός διακομιστή Ιστού (πρωτόκολλο HTTP, ΣτΜ.):

[jimmy@blob ~] telnet www.some.net 80
Trying 64.39.151.23...
Connected to www.some.net.
Escape character is '^]'.
HEAD / ;HTTP/1.1

HTTP/1.1 200 OK
Date: Fri, 22 Mar 2002 10:05:14 GMT
Server: Apache/1.3.22 (UNIX) (Red-Hat/Linux) 
 mod_ssl/2.8.5 OpenSSL/0.9.6
 DAV/1.0.2 PHP/4.0.6 mod_perl/1.24_01
Last-Modified: Fri, 04 Jan 2002 08:21:00 GMT
ETag: "70061-68-3c3565ec"
Accept-Ranges: bytes
Content-Length: 104
Connection: close
Content-Type: text/html

Connection closed by foreign host.

[jimmy@blob ~]
      

Αυτά είναι απόλυτα ασφαλή αφού ποτέ δεν δίνετε όνομα χρήστη και κωδικό πρόσβασης για να πάρετε τα δεδομένα που θέλετε, άρα κανείς δεν μπορεί να υποκλέψει πληροφορίες στο δίκτυο.


10.4.3. Το σύστημα X Window

10.4.3.1. Χαρακτηριστικά του X

Όπως ήδη έχουμε εξηγήσει στο Κεφάλαιο 7 (δείτε Ενότητα 7.3.3), το σύστημα Χ Window συνοδεύεται από έναν διακομιστή Χ ο οποίος προσφέρει γραφικό περιβάλλον στους πελάτες που χρειάζονται μία απεικόνιση.

Είναι σημαντικό να αντιληφθούμε την διαφορά μεταξύ των εφαρμογών διακομιστή Χ και πελάτη Χ. O διακομιστής X ελέγχει άμεσα την απεικόνιση και είναι υπεύθυνος γιά όλες τις εισόδους και εξόδους που προέρχονται από το πληκτρολόγιο, ποντίκι και την οθόνη. Ο πελάτης X , από την άλλη πλευρά, δεν μπορεί να προσπελάσει άμέσα τις διατάξεις εισόδου και εξόδου. Επικοινωνεί με τον διακομιστή Χ ο οποίος διαχειρίζεται τις εισόδους και εξόδους. Ο πελάτης Χ κάνει την πραγματική δουλειά, δηλαδή τους υπολογισμούς τιμών, την εκτέλεση εφαρμογών κλπ. Ο διακομιστής Χ, απλά ανοίγει παράθυρα και χειρίζεται την είσοδο και έξοδο του συγκεκριμένου πελάτη.

Σε κανονική λειτουργία (γραφικό περιβάλλον), κάθε σταθμός εργασίας Linux είναι ένας διακομιστής Χ για ευατό του, ακόμη και αν εκτελεί μόνο εφαρμογές πελάτη. Όλες οι εφαρμογές που εκτελούνται (για παράδειγμα, το Gimp, ένα παράθυρο τερματικού, ο περιηγητής σας , οι εφαρμογές γραφείου, το εργαλείο αναπαραγωγής CD , κλπ.) είναι πελάτες του διακομιστή Χ. Σε αυτή τη περίπτωση διακομιστής και πελάτης εκτελούν εφαρμογές στον ίδιο υπολογιστή.

Αυτή η λογική πελάτη/διακομιστή του συστήματος Χ το καθιστά ιδανικό περιβάλλον για απομακρυσμένη εκτέλεση εφαρμογών και προγραμμάτων. Επειδή η διεργασία ουσιαστικά εκτελείται στο απομακρυσμένο μηχάνημα , απαιτείται πολύ λίγη υπολογιστική ισχύς στον τοπικό υπολογιστή. Τέτοιοι υπολογιστές, που λειτουργούν αποκλειστικά σχεδόν σαν διακομιστές Χ, ονομάζονται τερματικά Χ και παλιότερα ήταν πολύ δημοφιλή. Περισσότερες πληροφορίες μπορείτε να βρείτε στο  Remote X applications mini-HOWTO.


10.4.3.2. Telnet και X

Εάν θέλετε να χρησιμοποιήσετε το telnet για να εμφανίσετε γραφικές εφαρμογές που εκτελούνται σε ένα απομακρυσμένο μηχάνημα , πρώτα χρειάζεστε να δώσετε στο απομακρυσμένο μηχάνημα την δυνατότητα προσπέλασης στην οθόνης σας (στον διακομιστή Χ σας!) χρησιμοποιώντας την εντολή xhost, πληκτρολογώντας μία εντολή όπως παρακάτω στο παράθυρο τερματικού στο τοπικό υπολογιστή:

davy:~> xhost +remote.machine.com
      

Μετά, συνδέεστε με τον απομακρυσμένο υπολογιστή λέγοντας του να εμφανίσει τα γραφικά του στο τοπικό υπολογιστή ρυθμίζοντας τη μεταβλητή περιβάλλοντος DISPLAY:

[davy@remote ~] export DISPLAY="local.host.com:0.0"
      

Μετά την ολοκλήρωση αυτού του βήματος, κάθε εφαρμογή που ξεκινά από αυτό το παράθυρο τερματικού θα εμφανίζεται στην τοπική οθόνη, χρησιμοποιώντας απομακρυσμένους πόρους για υπολογισμούς, αλλά οι τοπικούς πόρους γραφικών (ο διακομιστής Χ) για την εμφάνιση της εφαρμογής.

Αυτή η διαδικασία υποθέτει ότι έχετε ένα είδος διακομιστή Χ (Xfree86, X.org, Exceed, Cygwin) ήδη εγκατεστημένο στον τοπικό υπολογιστή σας. Η αρχιτεκτονική και το λειτουργικό σύστημα του τοπικού υπολογιστή δεν είναι σημαντικά αρκεί να σας επιτρέπουν να εκτελέσετε έναν διακομιστή Χ.

Σκεφτείτε ότι η εμφάνιση ενός παράθυρου τερματικού από το απομακρυσμένο υπολογιστή θεωρείται ότι είναι επίσης η εμφάνιση μίας εικόνας.


10.4.4. Το πακέτο SSH

10.4.4.1. Εισαγωγή

Τα περισσότερα συστήματα UNIX και Linux τώρα πλέον χρησιμοποιούν τον Ασφαλή Φλοιό (Secure SHell, SSH) ώστε να αποφέυγονται οι κίνδυνοι ασφαλείας που προέρχονται από το telnet. Τα περισσότερα συστήματα Linux εκτελούν μια έκδοση του OpenSSH, μια υλοποίηση Ανοικτού Κώδικα του πρωτοκόλλου SSH, προσφέροντας ασφαλή κρυπτογραφημένη επικοινωνία μεταξύ μη-έμπιστων υπολογιστών μέσω ενός μη-έμπιστου δικτύου. Στην τυπική ρύθμιση, οι συνδέσεις Χ προωθούνταιι αυτόματα, αλλά και αυθαίρετες TCP/IP θύρες μπορούν να είναι επίσης να προωθηθούν μέσω ενός ασφαλούς καναλιού.

Ο πελάτης ssh συνδέεται στο συγκεκριμένο απομακρυσμένο υπολογιστή. Ο χρήστης πρέπει να δώσει το όνομά του στο απομακρυσμένο υπολογιστή όπως ορίζεται στο αρχείο sshd_config, το οποίο συνήθως βρίσκεται στο /etc/ssh. Το αρχείο διαμόρφωσης είναι αρκετά επεξηγηματικό και οι προεπιλεγμένες ρυθμίσεις αρκούν για μια συνήθη λειτουργία Εάν χρειασθείτε βοήθεια μπορείτε να την βρείτε στις σελίδες τεκμηρίωσης του sshd .

Όταν η ταυτότητα του χρήστη γίνει δεκτή από τον απομακρυσμένο υπολογιστή, ο υπολογιστής είτε εκτελεί μια συγκεκριμένη εντολή , είτε δίνει στον χρήστη τον συνηθισμένο φλοιό του. Όλη η επικοινωνία με την απομακρυσμένη εντολή ή το φλοιό θα είναι αυτόματα κρυπτογραφημένη.

Η σύνοδος τελειώνει όταν η εντολή ή ο φλοιός του απομακρυσμένου υπολογιστή τερματίσει και όλες οι Χ11 και TCP/IP επικοινωνίες έχουν κλείσει.

Όταν συνδέεστε σε έναν υπολογιστή για πρώτη φορά, χρησιμοποιώντας οποιοδήποτε από τα προγράμματα που συμπεριλαμβάνονται στη συλλογή SSH, απαιτείται ταυτοποίηση του απομακρυσμένου υπολογιστή και επιβεβαίωση ότι θέλετε να συνδεθείτε:

lenny ~> ssh blob
The authenticity of host 'blob (10.0.0.1)' can't be established.
RSA fingerprint is 18:30:50:46:ac:98:3c:93:1a:56:35:09:8d:97:e3:1d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'blob,192.168.30.2' (RSA) to the list of 
known hosts.
Last login: Sat Dec 28 13:29:19 2002 from octarine
This space for rent.

lenny is in ~
      

Είναι σημαντικό να εισάγετε "yes", με τρείς χαρακτήρες, όχι μόνο "y". Αυτό τροποποιεί το αρχείο ~/.ssh/known_hosts, δείτε Ενότητα 10.4.4.3.

Αν θέλετε απλά να ελέγξετε κάτι σε ένα απομακρυσμένο υπολογιστή και η προτροπή να επιστρέψει πίσω στο τοπικό υπολογιστή, μπορείτε να δώσετε τις εντολές που θέλετε να εκτελεστούν απομακρυσμένα ως ορίσματα στην εντολή ssh:

lenny ~> ssh blob who
jenny@blob's password:
root     tty2         Jul 24 07:19
lena     tty3         Jul 23 22:24
lena     0:           Jul 25 22:03

lenny ~> uname -n
magrat.example.com
      

10.4.4.2. X11 και προώθηση TCP

Αν η γραμμή X11Forwarding στο αρχείο sshd_config στον απομακρυσμένο υπολογιστή ρυθμιστεί στο yes και ο χρήστης εκτελεί εφαρμογές X, η μεταβλητή περιβάλλοντος DISPLAY ρυθμίζεται αυτόματα έτσι ώστε η τοπικός υπολογιστής λειτουργεί ως διακομιστής X ενώ ο απομακρυσμένος υπολογιστής λειτουργεί ως πελάτης Χ, με όλα τα προγράμματα X11 που ξεκινούν από τον ασφαλή φλοιό στον απομακρυσμένο υπολογιστή επικοινωνούν μέσω του κρυπτογραφημένου καναλιού με τον τοπικό υπολογοστή. Ο χρήστης δεν χρειάζεται να ρυθμίσει χειρονακτικά τη μεταβλητή DISPLAY. Η προώθηση των συνδέσεων X11 μπορούν να διαμορφωθούν είτε από τη γραμμή εντολών (για παράδειγμα με την επιλογή κατά την χρήση της εντολής ssh .Προσοχή, πρόκειται για κεφαλαίο γράμμα, η επιλογή με πεζό γράμμα έχει το αντίθετο αποτέλεσμα. ΣτΜ.) ή μέσω του αρχείου διαμόρφωσης του sshd.

Η τιμή της μεταβλητής DISPLAY όπως ρυθμίζεται από την ssh θα δείχνει στον διακομιστή X, αλλά με αριθμό απεικόνισης μεγαλύτερο του μηδενός. Αυτό είναι φυσιολογικό γιατί η ssh δημιουργεί ένα διακομιστή διαμεσολάβησης (proxy) X μέσα στο πελάτη X (τον απομακρυσμένο υπολογιστή που εκτελεί τις εφαρμογές Χ) που προωθεί τις συνδέσεις μέσω του κρυπτογραφημένου καναλιού.

Όλα αυτά γίνονται αυτόματα, ώστε εσείς απλά εισάγετε το όνομα της γραφικής εφαρμογής Χ στο απομακρυσμένο ασφαλή φλοιό και η εφαρμογή εμφανίζεται στην οθόνη σας. Χρησιμοποιούμε ως παράδειγμα την εφαρμογή xclock επειδή είναι μικρό πρόγραμμα και είναι εγκαταστημένο παντού, άρα ιδανικό για έλεγχο:

Εικόνα 10-3. SSH προώθηση X11

Το πρωτόκολλο SSH επίσης αυτόματα ρυθμίζει τα δεδομένα του Xauthority στο απομακρυσμένο υπολογιστή. Γι' αυτό το σκοπό, δημιουργεί ένα τυχαίο cookie ταυτοποίησης, το αποθηκεύει στη στο αρχείο ~/.Xauthority και χρησιμοποιεί αυτό το cookie για κάθε σύνδεση X που ανοίγει. Το πραγματικό cookie ταυτοποίησης ποτέ δεν αποστέλλεται (και κανένα cookie δεν στέλνεται χωρίς κρυπτογράφηση).

Η προώθηση αυθαίρετων συνδέσεων TCP/IP μέσω ασφαλούς καναλιού μπορεί να καθοριστεί είτε από τη γραμμή εντολών (για παράδειγμα δείτε τις σελίδες τεκμηρίωσης για την επιλογή της εντολής ssh, ΣτΜ.) ή μέσω του αρχείου διαμόρφωσης του sshd.

Note

O διακομιστής X

 

Αυτή η διαδικασία υποθέτει ότι στο τοπικό υπολογιστή σας εκτελείται ένας διακομιστής X όπου εμφανίζονται όλες οι εφαρμογές Χ του απομακρυσμένου υπολογιστή, Ο τοπικός υπολογιστής μπορεί να είναι διαφορετικής αρχιτεκτονικής ή/και να χρησιμοποιεί διαφορετικό λειτουργικό σύστημα από τον απομακρυσμένο υπολογιστή, αρκεί να εκτελεί ένα διακομιστή X. Τέτοια παραδείγματα είναι το Cygwin (ένα ελεύθερο λογισμικό που υλοποιεί ένα διακομιστή X.org sγια υπολογιστές με λειτουργικό σύστημα MS Windows ή άλλο) ή clients and others) or το Exceed (αντίστοιχο εμπορικό λογισμικό), μέσω των οποίων μπορεί κανείς να συνδεθεί με απομακρυσμένα συστήματα Linux ή UNIX μέσω γραφικής διεπαφής. (Σε όλο το παραπάνω κείμενο χρειάζεται προσοχη χρήση των όρων πελάτης/διακομιστής σε σχέση με το πρωτόκολλο SSH και το σύστημα X: στη συνηθισμένη διαμόρφωση έχουμε το εξής 'παράδοξο': ο τοπικος υπολογιστής είναι ο πελάτης SSH αλλά ταυτόχρονα ο διακομιστής X. Αντίστοιχα, ο απομακρυσμένος υπολογιστής είναι ο διακομιστής SSH αλλά ο πελάτης Χ, ΣτΜ.).


10.4.4.3. Ταυτοποίηση διακομιστή

Το σύστημα πελάτη/διακομιστή ssh συντηρεί και διαχειρίζεται αυτόματα μια βάση δεδομένων που περιέχει στοιχεία ταυτοποίησης όλων των απομακρυσμένων υπολογιστών με τους οποίους έχει συνδεθεί. Τα κλειδιά των απομακρυσμένων υπολογιστών αποθηκεύονται στο αρχείο ~/.ssh/known_hosts στον οικείο κατάλογο του χρήστη. Επιπλέον, ελέγχεται αυτόματα και το αρχείο /etc/ssh/ssh_known_hosts για καθολικά γνωστούς απομακρυσμένους υπολογιστές. Κάθε νέος υπολογιστής προστίθεται στο αρχείο του χρήστη. Αν ποτέ αλλάξουν τα στοιχεία ταυτοποίησης ενός υπολογιστή, η ssh εμφανίζει σχετικό μήνυμα και αποκλείει την αποστολή και ταυτοποίηση του συνθηματικού πρόσβασης του χρήστη ώστε να αποτρέψει τη πιθανότητα ο κωδικός να αποσταλεί σε Δούρειο ίππο. Ένας άλλος σκοπός αυτής της απαγόρευσης είναι να αποτρέψει επιθέσεις τύπου man-in-the-middle που πιθανώς προσπαθούν να παρακάμψουν την κρυπτογράφηση. (Ένας τρόπος να προχωρήσουμε σε αυτές τις περιπτώσεις είναι να διαγράψουμε τη γραμμή του υπολογιστή που προκαλεί το πρόβλημα από το αρχείο ~/.ssh/known_hosts, έτσι ώστε η ssh να θεωρήσει τον απομακρυσμένο υπολογιστή ως νέο και να τον εγγράψει στο αρχείο με νέα στοιχεία ταυτοποίησης, ΣτΜ.). Σε περιβάλλοντα που απαιτείται μεγάλη ασφάλεια, ο δαίμονας sshd μπορεί να διαμορφωθεί έτσι ώστε να μην επιτρέπει συνδέσεις με υπολογιστές που είναι άγνωστοι ή τα στοιχεία ταυτοποίησης έχουν μεταβληθεί. (Σε αυτή τη περίπτωση, η ασφάλεια ελέγχεται όχι μόνο από τον πελάτη αλλά και από τον διακομιστή SSH, ΣτΜ.).


10.4.4.4. Ασφαλής απομακρυσμένη αντιγραφή

Το πακέτο SSH παρέχει την εντολή scp ως μια ασφαλή εναλλακτική στην εντολή rcp που ήταν δημοφιλής όταν υπήρχε μόνο το rsh. Το scp χρησιμοποιεί το ssh για μεταφορά δεδομένων, με την ίδια ταυτοποίηση και ασφάλεια όπως το ssh. Σε αντίθεση με το το rcp, το scp θα ζητήσει για κωδικούς πρόσβασης εάν χρειάζονται για τη πιστοποίηση:

lenny /var/tmp> scp Schedule.sdc.gz blob:/var/tmp/
lenny@blob's password:
Schedule.sdc.gz  100% |*****************************| 100 KB 00:00

lenny /var/tmp>
      

Οποιοδήποτε όνομα αρχείου μπορεί να περιέχει προ