ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος
>_ ΙΣΤΟΡΙΚΗ ΑΝΑΔΡΟΜΗ (1/3) /ˈjuː.nɪks/ +- Στην πρωταρχικη του μορφη κατασκευάστηκε απο τον Ken Thompson το 1969 σε γλώσσα assembly για ένα PDP-7 στα Bell Laboratories της ΑΤ&Τ +- Μεταφέρθηκε σε ένα PDP-11 το 1971 απο τον Ken Thompson και τον Dennis Ritchie +- Το 1973 υλοποιήθηκε εξ αρχής στο μεγαλύτερο μέρος του στη γλώσσα C, η οποία αναπτύχθηκε απο τον Brian Kernighan και τον Dennis Ritchie +- Λόγω μονοπωλιακών τακτικών σύμφωνα με τους εμπορικούς νόμους των ΗΠΑ, η Bell αναγκάστηκε να διανείμει το Unix δωρεάν στα Πανεπιστημιακα ιδρύματα.
>_ ΙΣΤΟΡΙΚΗ ΑΝΑΔΡΟΜΗ (2/3) /ˈjuː.nɪks/ +- Το 1987 η μητρικη της Bell, AT&T ανακοινώνει τη χρέωση διάθεσης του πηγαίου κ ώδικα του Unix σε όλους. Έτσι το πανεπιστήμιο της California ανακοίνωσε τη δημιουργία του δικου της Unix-Based λειτουργικου, με όνομα Berkley Software Distribution ή BSD. +- Tο οι Sun και AT&T συνεργάστηκαν για τη συνένωση του AT&T Unix με το B1987 SD. +- Μετα την είσοδο του Internet τη δεκαετία του 1980, έδωσε τη δυνατότητα σε προγραμματιστές ερευνητές και φοιτητές να συνεισφέρουν στην εξέλιξη του λειτουργικου χωρίς να είναι αναγκαίο να βρίσκονται στον ίδιο χώρο.
>_ ΙΣΤΟΡΙΚΗ ΑΝΑΔΡΟΜΗ (3/3) /ˈjuː.nɪks/ +- Παρόλο που για μεγάλο χρονικο διάστημα, περίπου μία 25ετία, το Unix ήταν περιορισμένο σε ακαδημαι κα και ερευνητικα περιβάλλοντα μόνο, σήμερα ως Linux, έ χει καταλάβει τους προσωπικούς υπολογιστές πολλών χρηστών. +- Εδω και μερικα χρόνια είναι σε εξέλιξη μία διαρκής προσπάθεια τυποποίησης του (IEEE POSIX, Open Group). +- Πολλοι οργανισμοι και εταιρίες χρησιμοποιούν Unix- based mail και web servers (apache).
>_ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΤΟΥ UNIX (1/3) /ˈjuː.nɪks/ +- Λειτουργικό σύστημα πολλών χρηστών (multi user) +- Υποστήριξη πολλαπλών διεργασιών με διαμέριση χρόνου (multi tasking) +- Built in (και όχι patch) παροχη ασφάλειας +- Υποστήριξη δικτύων +- Υποστήριξη πολλών αρχιτεκτονικών: IA-32, MIPS, x86-64, SPARC, DEC Alpha, Itanium, PowerPC, ARM, m68k, PA-RISC, s390, SuperH, M32R κτλ.
>_ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΤΟΥ UNIX (2/3) /ˈjuː.nɪks/ +- Τα πάντα είναι παραμετροποιήσιμα. Η συμπεριφορα του κάθε προγράμματος ή εντολής αλλάζει και προσαρμόζεται ανάλογα με τις ανάγκες των χρηστών ή των διαχειριστών +- Τα πάντα είναι σταθερα. Κάθε στοιχείο του συστήματος αναπαρίσταται ως αρχείο. Αυτο το διακρίνουμε σε ΟΛΑ τα στοιχεία, απο τα έγγραφα μέχρι το hardware. Π.χ ο σκληρός δίσκος είναι το αρχείο /dev/sda1.
>_ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΤΟΥ UNIX (3/3) /ˈjuː.nɪks/ +- Αυτοματοποίηση καθημερινών εντολών και ρουτινών. Δίνεται η δυνατότητα να γραφτούν απο τον κάθε χρήστη script, τα οποία εκτελούν κάποιες διαδικασίες, εντολέ ς ή προγράμματα σε συγκεκριμένο χρόνο ή συγκεκριμένη κατάσταση του συστή ματος. Π.χ Αυτοματοποιείται η λήψη εφεδρικών αντιγράφων απο τους διαχειριστές ή τους χρήστες. +- Αποφυγη Δεσμεύσεων χρήστη. Windows και Mac OS αντιμετωπίζουν τον χρήστη σαν άνθρωπο και όχι σαν άλλο πρόγραμμα. +- Είναι γρήγορα. +- Τα δυνατότερα συστήματα στον κόσμο χρησιμοποιούν linux.
>_ ANATOMIA Unix
>_ ΔΟΜΗ Unix (1/3) Πυρήνας (Kernel) +- Σύνολο συναρτήσεων χαμηλου επιπέδου. +- Έλεγχος λειτουργίας συστήματος. +- Χρονοπρογραμματισμός (schedule) της χρήσης των συσκευών (devices) για διάφορες εργασίες (tasks). +- Ελέγχεται η οργάνωση σε συστήματα αρχείων (file systems). +- Καθοδηγείται με οδηγούς (drivers) η λειτουργία των συσκευών και των πό ρων (resources) του συστήματος. +- Δεν υπάρχει άμεση επαφη του απλου χρήστη με τον πυρήνα. +- Λειτουργει συνήθως στο παρασκήνιο
>_ ΔΟΜΗ Unix (2/3) Φλοιός (Shell) +- Το μέσο επικοινωνίας του χρήστη με τον πυρήνα του ΛΣ. +- Μετάφραση εντολών του χρήστη σε Κλήσεις Συστήματος. +- Διερμηνέας εντολών και όχι μόνο. +- Υλοποίηση προγραμμάτων (Shell Scripts) +- Διαφορετικοι φλοιοι. +- Bourne Shell sh +- Bash (1989 - OSX & GNU) +- Korn ksh (1982-OpenSolaris) +- Z zsh (1990-GRML) +- C tcsh (1978 FreeBsd)
>_ ΔΟΜΗ Unix (2/3) Φλοιός (Shell) +- Το μέσο επικοινωνίας του χρήστη με τον πυρήνα του ΛΣ. +- Μετάφραση εντολών του χρήστη σε Κλήσεις Συστήματος. +- Διερμηνέας εντολών και όχι μόνο. +- Υλοποίηση προγραμμάτων (Shell Scripts) +- Διαφορετικοι φλοιοι. +- Bourne Shell sh +- Bash (1989 - OSX & GNU) +- Korn ksh (1982-OpenSolaris) +- Z zsh (1990-GRML) +- C tcsh (1978 FreeBsd)
>_ ΔΟΜΗ UNIX (3/3)
>_ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΜΑΘΗΜΑ Putty +- Tο βασικο μας εργαλείο +- Μας προσφέρει απομακρυσμένη σύνδεση μέσω ssh στον server που θα κάνουμε τις εργασίες μας στο εργαστήριο και στο σπίτι VMware Player +- Πλατφόρμα διαχείρισης εικονικών μηχανών (Virtual Machines), όπου θα τοποθετήσουμε το δικο μας server για την εξάσκηση στο σπίτι Ubuntu Linux +- Διανομη Linux που θα χρησιμοποιήσουμε για εξάσκηση στο σπίτι
>_ ΔΟΜΗ ΤΩΝ ΕΝΤΟΛΩΝ UNIX Terminal +- Υπάρχει διάκριση μεταξυ κεφαλαίων και πεζών γραμμάτων, δηλαδη είναι Case Sensitive +- Η κάθε εντολη έχει την εξής δομή : +- Εντολη [επιλογές] προέλευση προορισμός +- Ότι εμπεριέχεται στις επιλογές δηλαδη εντός των [] είναι προαιρετικο. +- ο συμβολίζει ότι δεν μπορούν να χρησιμοποιηθούν δύο επιλογές ταυτόχρονα +- Υπάρχει και η δυνατότητα συνδυασμου των εντολών π.χ +- ps aux grep Terminal
>_ ΛΟΓΑΡΙΑΣΜΟΣ ΧΡΗΣΤΗ (1/2) User +- Όνομα χρήστη (user name) +- Συνθηματικο (password) +- Κέλυφος αρχικής σύνδεσης +- Αρχικη ομάδα +- Κατάλογος αφετηρίας
>_ ΛΟΓΑΡΙΑΣΜΟΣ ΧΡΗΣΤΗ (2/2) Πως κάνουμε login από το putty: +- Δίνουμε το hostname (ή την ip) και πατάμε open +- Δίνουμε το username +- Μετα το password και μας πάει στον αρχικο κατάλογο
>_ ΣΥΧΝΕΣ ΕΝΤΟΛΕΣ (1/5) +- man: Εμφάνιση οδηγιών χρήσης εντολών +- ls: Εμφάνιση περιεχομένων καταλόγου +- pwd: Εμφάνιση τρέχοντος καταλόγου +- cd: Αλλαγη τρέχοντος καταλόγου +- mkdir: Δημιουργία καταλόγου +- rmdir: Διαγραφη καταλόγου +- cp: Αντιγραφη αρχείων +- mv: Μετακίνηση, ή μετονομασία αρχείων +- rm: Διαγραφη αρχείων +- cat: Εμφάνιση περιεχομένων αρχείων
>_ ΣΥΧΝΕΣ ΕΝΤΟΛΕΣ (2/5) +- lpr: Εκτύπωση αρχείων +- vi: Κειμενογράφος οθόνης +- passwd: Αλλαγη κωδικου χρήστη +- Προσοχη! Κατα την πληκτρολόγηση του κωδικου δεν τυπώνεται τί ποτα στην οθόνη +- whoami: Πληροφορίες χρήστη +- who: Εμφάνιση των χρηστών που είναι logged in +- w: Εμφάνιση των χρηστών που είναι logged in +- με περισσότερες λεπτομέρειες απο την who +- finger: Εμφάνιση πληροφοριών χρήστη
>_ ΣΥΧΝΕΣ ΕΝΤΟΛΕΣ (3/5) +- last: Εμφάνιση τελευταίων συνδέσεων +- clear: Καθαρισμός οθόνης +- cal: Προβολη ημερολογίου +- exit: Έξοδος απο το τερματικο +- nano: Κειμενογράφος οθόνης +- logout: Αποσύνδεση χρήστη +- uname: Όνομα λειτουργικου συστήματος. +- history: Λίστα εντολών που χρησιμοποιήθηκαν στο τερματικο.
>_ ΣΥΧΝΕΣ ΕΝΤΟΛΕΣ (3/5) +- ls (list): Εμφάνιση αρχείων καταλόγου. +- pwd (print working directory): Εμφάνιση τρέχοντος καταλόγου. +- cd (change directory): μετάβαση σε φάκελο.
>_ ΣΥΧΝΕΣ ΕΝΤΟΛΕΣ (5/5) +- whoami: Πληροφορίες χρήστη. +- cat: Εμφάνιση περιεχομένων του αρχείου +- Π.χ cat Test.txt εμφανίζει την μοναδικη καταχώρηση This is a test!!! του αρχείου +- rmdir: Διαγραφη καταλόγου
>_ ΒΟΗΘΗΤΙΚΕΣ ΕΝΤΟΛΕΣ (1/2) +- Πολλές φορές τυχαίνει να ξέρω μια εντολη αλλα να μην θυμάμαι ακριβώς πώς λειτουργει. +- Η εντολη man (manual) περιέχει πληροφορίες για κάθε εντολη +- Τρόπος σύνταξης: man όνομα εντολής +- Πληροφορίες σύνταξης +- Εντολη help
>_ ΕΝΤΟΛΕΣ UNIX +- echo: Εμφάνιση στην οθόνη της ακολουθίας χαρακτήρων που δωσαμε +- όνομα μεταβλητής = τιμη μεταβλητής +- Π.χ myname=q +- $ όνομα μεταβλητής: επιστροφη τιμής της μεταβλητής +- Π.χ echo $myname +- declare [επιλογές ] όνομα μεταβλητής +- -a: η μεταβλητη είναι πίνακας +- -i: η μεταβλητη είναι ακέραιος +- -r: η μεταβλητη είναι μόνο για ανάγνωση
>_ ΔΗΜΙΟΥΡΓΙΑ SCRIPT +- Προκειμένου να εκτελέσουμε μία σειρα εντολών πρέπει να δημιουργησουμε ένα αρχείο script το οποίο να τις περιέχει. +- Κάθε αρχείο script ξεκινάει με το όνομα του φλοιου που είναι γραμμένο, ώστε να διερμηνευτει ανάλογα. +- #!/bin/sh +- #!/bin/bash +- #!/bin/bourne +- Ανακατεύθυνση του stdin < -> Είσοδος απο αρχείο και όχι απο το πληκτρολόγιο +- Ανακατεύθυνση του stdout > -> Ανακατεύθυνση εξόδου σε αρχείο. Αν δεν υπάρχει το αρχείο δημιουργείται. Αν υπάρχει τότε αντικαθίσταται. +- Ανακατεύθυνση του stdout με προσάρτηση >> -> Ανακατεύθυνση εξόδου σε αρχείο. Το αρχείο αν δεν υπάρχει δημιουργείται. Αν υπάρχει, τα δεδομένα εισέρχονται μετα την τελευταία γραμμη.
>_ΕΚΤΕΛΕΣΗ SCRIPT +- chmod +x script.sh +-./script.sh
Σχεσιακοί τελεστές: +- -eq (equal) = +- -ne (not equal)!= +- -gt (greater than) > +- -lt (less than) < +- -ge (greater or equal) >= +- -le (lower or equal) <= >_ ΤΕΛΕΣΤΕΣ (1/3)
>_ ΤΕΛΕΣΤΕΣ (2/3) Τελεστές ακολουθίας χαρακτήρων: +- == Ίσο, a==b +-!= Διάφορο, a!=b +- -z Έλεγχος αν είναι μηδενικού μήκους. Αν ναι επιστρέφει true +- -n Έλεγχος αν είναι μη μηδενικού μήκους. Αν ναι επιστρέφει true
Λογικοί τελεστές: >_ ΤΕΛΕΣΤΕΣ (3/3) +- Ισχύει η συνθήκη a ή η συνθήκη b π.χ if [συνθήκη a ] [συνθήκη b] +- && Ισχύει η συνθήκη a και η συνθήκη b π.χ if [συνθήκη a ] && [συνθήκη b] +- -o ισχύει το a ή το b π.χ [ $a gt $b -o $a -ne $b ] +- -a ισχύει το a και το b π.χ [ $a gt $b -a $c -gt $b ]
>_ ΔΟΜΗ ΕΠΙΛΟΓΗΣ (1/3) if if [συνθήκη] fi then <εντολές> else <εντολές>
>_ ΔΟΜΗ ΕΠΙΛΟΓΗΣ (2/3) If-elif if [συνθήκη] then <εντολές> elif [συνθήκη] then <εντολές> else <εντολές> fi
>_ ΔΟΜΗ ΕΠΙΛΟΓΗΣ (3/3) case case <έκφραση> in <περίπτωση 1> <εντολές1>;; <περίπτωση 2> <εντολές2>;; : : <περίπτωση ν> <εντολέςν>;; esac
>_ ΠΑΡΑΔΕΙΓΜΑ ΔΟΜΗΣ ΕΠΙΛΟΓΗΣ (1/2) Να γραφτεί script (if) που θα ελέγχει δυο αριθμούς αν είναι ίσοι.
>_ ΠΑΡΑΔΕΙΓΜΑ ΔΟΜΗΣ ΕΠΙΛΟΓΗΣ (1/2)
>_ ΠΑΡΑΔΕΙΓΜΑ ΔΟΜΗΣ ΕΠΙΛΟΓΗΣ (2/2) Να γραφτεί script (case) που θα ελέγχει ένα ένα φρούτο είναι banana, kiwi ή apple.
>_ ΠΑΡΑΔΕΙΓΜΑ ΔΟΜΗΣ ΕΠΙΛΟΓΗΣ (2/2)
>_ ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ (1/4) while while <συνθήκη> do <εντολή 1> <εντολή 2> : <εντολή n> done
>_ ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ (2/4) until until <συνθήκη> do <εντολή 1> <εντολή 2> : <εντολή n> done
>_ ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ (3/4) for for (έκφραση1; έκφραση2; έκφραση3) do <εντολή 1> <εντολή 2> : <εντολή n> done
>_ ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ (4/4) select select <έκφραση> in λίστα do <εντολή 1> <εντολή 2> : <εντολή n> done Διαθέσιμη στους φλοιούς ksh και bash
>_ ΠΑΡΑΔΕΙΓΜΑ ΔΟΜΗΣ ΕΠΑΝΑΛΗΨΗΣ (1/4) Να γραφτεί script (while) που θα εμφανίζει από το 0 μέχρι το 5
>_ ΠΑΡΑΔΕΙΓΜΑ ΔΟΜΗΣ ΕΠΑΝΑΛΗΨΗΣ (1/4)
>_ ΠΑΡΑΔΕΙΓΜΑ ΔΟΜΗΣ ΕΠΑΝΑΛΗΨΗΣ (2/4) Να γραφτεί script (until) που θα εμφανίζει από το 0 μέχρι το 5
>_ ΠΑΡΑΔΕΙΓΜΑ ΔΟΜΗΣ ΕΠΑΝΑΛΗΨΗΣ (2/4)
>_ ΠΑΡΑΔΕΙΓΜΑ ΔΟΜΗΣ ΕΠΑΝΑΛΗΨΗΣ (3/4) Να γραφτεί script (for) που θα εμφανίζει από το 2 μέχρι το 5
>_ ΠΑΡΑΔΕΙΓΜΑ ΔΟΜΗΣ ΕΠΑΝΑΛΗΨΗΣ (3/4)
>_ ΠΑΡΑΔΕΙΓΜΑ ΔΟΜΗΣ ΕΠΑΝΑΛΗΨΗΣ (4/4) Να γραφτεί script (select) που θα εμφανίζει πληροφορίες για την διαθεσιμότητα ροφημάτων
>_ ΠΑΡΑΔΕΙΓΜΑ ΔΟΜΗΣ ΕΠΑΝΑΛΗΨΗΣ (4/4)
>_ ΑΣΚΗΣΗ Να γραφτεί script που εμφανίζει το μήνυμα You have Access όταν ο χρήστης εισάγει σωστό συνθηματικό και Access denied σε αντίθετη περίπτωση.
>_ ΛΥΣΗ
THE BEGINNINGS OF THE HACKER CULTURE AS WE KNOW IT TODAY CAN BE CONVENIENTLY DATED TO 1961, THE YEAR MIT ACQUIRED THE FIRST PDP-1. ERIC S. RAYMOND