ΣΟ ΛΕΙΣΟΤΡΓΙΚΟ ΤΣΗΜΑ UNIX ηότοι εργαζηηρίοσ Σην πιαίζην ηνπ ζπγθεθξηκέλνπ εξγαζηεξίνπ, ζα παξνπζηαζηεί ην ιεηηνπξγηθό ζύζηεκα Unix, θαζώο θαη δηάθνξεο βαζηθέο εληνιέο δηαρείξηζεο. 1. Οριζμός Λειηοσργικού σζηήμαηος Έλα Λεηηνπξγηθό Σύζηεκα απνηειεί έλα ινγηζκηθό ζπζηήκαηνο, πνπ παξέρεη ηελ δηαζύλδεζε κεηαμύ ηνπ πιηθνύ ελόο Η/Υ θαη ηνπ ρξήζηε (Εηθόλα 1). Παξέρεη δηάθνξεο ππεξεζίεο, όπσο ελδεηθηηθά είλαη, ε δηαρείξηζε ησλ δηεξγαζηώλ, ε δηαρείξηζε ηεο κλήκεο, ε δηαρείξηζε ηνπ ζπζηήκαηνο εηζόδνπ/εμόδνπ θαη ε δηαρείξηζε ηνπ ζπζηήκαηνο αξρείσλ. Επηπιένλ, κία από ηηο θεληξηθέο αξκνδηόηεηεο ηνπ ιεηηνπξγηθνύ ζπζηήκαηνο είλαη ε δηαρείξηζε ηνπ πιηθνύ, απαιιάζζνληαο έηζη ηηο εθαξκνγέο από ηνλ άκεζν θαη επίπνλν ρεηξηζκό ηνπ ηειεπηαίνπ θαη θαζηζηώληαο επθνιόηεξν ηνλ πξνγξακκαηηζκό ηνπο. Σρεδόλ όινη νη ππνινγηζηέο ρξεζηκνπνηνύλ έλαλ ηύπν ιεηηνπξγηθνύ ζπζηήκαηνο γηα ηελ ιεηηνπξγία ηνπο. Εικόνα 1 - σζτεηιζμός λειηοσργικού ζσζηήμαηος, σλικού, εθαρμογής και τρήζηη Τα ιεηηνπξγηθά ζπζηήκαηα κπνξνύλ λα δηαρσξηζηνύλ ζε δύν κεγάιεο θαηεγνξίεο. Τα εκπνξηθά θαη ηα αλνηθηνύ θώδηθα. Τα εκπνξηθά ιεηηνπξγηθά ζπζηήκαηα δηαηίζεληαη ζηελ αγνξά κε θάπνην θόζηνο, ελώ ηα αλνηθηνύ θώδηθα δηαηίζεληαη δσξεάλ ζην Δηαδίθηπν. Παξαδείγκαηα εκπνξηθώλ ιεηηνπξγηθώλ ζπζηεκάησλ, είλαη ηα Windows θαη ηα MacOS, ελώ παξαδείγκαηα ιεηηνπξγηθώλ ζπζηεκάησλ αλνηθηνύ θώδηθα είλαη ηα Unix θα Linux. 2. Σο λειηοσργικό ζύζηημα Unix Τν Unix ή UNIX είλαη ιεηηνπξγηθό ζύζηεκα, ην νπνίν αλαπηύρζεθε θαηά ηηο δεθαεηίεο ηνπ 1960 θαη ηνπ 1970 από νκάδα εξγαδνκέλσλ ησλ εξγαζηεξίσλ Bell Τν ιεηηνπξγηθό ζύζηεκα Unix Σειίδα 1
Labs ηεο εηαηξείαο AT&T. Σήκεξα ηα ζπζηήκαηα Unix έρνπλ ρσξηζηεί ζε πνιινύο θιάδνπο (Εηθόλα 2) θαη αλαπηύζζνληαη ηόζν από ηελ AT&T όζν θαη από άιινπο εκπνξηθνύο παξάγνληεο, όπσο θαη από αξθεηνύο κε θεξδνζθνπηθνύο νξγαληζκνύο, όπσο ην πξόγξακκα GNU. Εικόνα 2 - Ιζηορία ηοσ Unix To Unix έρεη ζπγθξηκέλα ραξαθηεξηζηηθά, (ηα νπνία δηέπνπλ θαη ηα πεξηζζόηεξα ζύγρξνλα ιεηηνπξγηθά ζπζηήκαηα) όπσο είλαη ηα παξαθάησ: Υπνζηεξίδεη ηαπηόρξνλα πνιινύο ρξήζηεο. Κάζε ρξήζηεο κπνξεί λα εθηειεί ηαπηόρξνλα πνιιά πξνγξάκκαηα. Κάζε ρξήζηεο έρεη έλαλ ινγαξηαζκό. Κάζε ινγαξηαζκόο θαζνξίδεη έλα «ρώξν» όπνπ ν ρξήζηεο δηαηεξεί ηα αξρεία ηνπ. Τν ιεηηνπξγηθό ζύζηεκα Linux απνηειεί κία ζπγθεθξηκέλε έθδνζε ηνπ Unix. Υπάξρνπλ δηάθνξεο εθδόζεηο ηνπ Linux. Ελδεηθηηθά αλαθέξνληαη νη παξαθάησ: Debian-based (π.ρ. Ubuntu) Gentoo-based (π.ρ. funtoo) RPM-based (π.ρ. Fedora, CentOS) Slackwave-based (π.ρ. VectorLinux) Γηα ηελ δηαρείξηζε ελόο Η/Υ κε ζύγρξνλν ιεηηνπξγηθό ζύζηεκα Unix, παξέρεηαη ηόζν γξαθηθό πεξηβάιινλ εξγαζίαο (Εηθόλα 3), όζν θαη κία γξακκή εληνιώλ (Εηθόλα 4). Τν ιεηηνπξγηθό ζύζηεκα Unix Σειίδα 2
Εικόνα 3 - Περιβάλλον εργαζίας λειηοσργικού ζσζηήμαηος Fedora 13 Εικόνα 4 - Γραμμή ενηολών Fedora 13 Τν ιεηηνπξγηθό ζύζηεκα Unix Σειίδα 3
2.1. ύνδεζη ζηην γραμμή ενηολών ηοσ Unix Γηα ηελ πξόζβαζε ζηελ γξακκή εληνιώλ ηνπ Unix, ππάξρνπλ δύν ηξόπνη: ηνπηθά θαη απνκαθξπζκέλα. Η ζύλδεζε ηνπηθά ζηελ γξακκή εληνιώλ ηνπ Unix, πξαγκαηνπνηείηαη κέζα από γξαθηθό πεξηβάιινλ εξγαζίαο (Εηθόλα 5), όπσο θαη ζηα Windows. Εικόνα 5 - ύνδεζη ηοπικά ζηην γραμμή ενηολών ηοσ Fedora 13 Εικόνα 6 - Απομακρσζμένη ζύνδεζη μέζω telnet ζε ένα Η/Τ με λειηοσργικό ζύζηημα Unix Ωζηόζν γηα ηελ απνκαθξπζκέλε ζύλδεζε ζε έλαλ Η/Υ κε ιεηηνπξγηθό ζύζηεκα Unix/Linux καο δίλεηαη κόλν ε δπλαηόηεηα δηαζύλδεζεο ζηελ γξακκή εληνιώλ. Γηα ηελ απνκαθξπζκέλε δηαζύλδεζε κπνξνύκε λα ρξεζηκνπνηήζνπκε δηάθνξα δηθηπαθά πξσηόθνιια (όπσο είλαη ην πξσηόθνιιν Telnet πνπ ζα παξνπζηαζηεί ζην επόκελν εξγαζηήξην). Η απνκαθξπζκέλε πξόζβαζε πξαγκαηνπνηείηαη κέζσ ηελ δηαδηθαζίαο login όπνπ αξρηθά καο δεηείηαη ην όλνκα ρξήζηε ζην πεδίν login θαη ν θσδηθόο Τν ιεηηνπξγηθό ζύζηεκα Unix Σειίδα 4
πξόζβαζεο ζην πεδίν password. Γηα ηελ απνζύλδεζε από ηνλ Η/Υ ρξεζηκνπνηνύκε ηελ εληνιή logout (Εηθόλα 6). 2.2. Υρήζηες και αρτεία ζηο Unix Σην Unix όπσο θαη ζε όια ηα ιεηηνπξγηθά ζπζηήκαηα ππάξρνπλ επξεηήξηα (directory) ζηα Windows ρξεζηκνπνηνύκαη ηνλ όξν θάθεινη (folders). Έλα επξεηήξην κπνξεί λα πεξηέρεη άιια ππό-επξεηήξηα ή/θαη αξρεία, θαη θάζε ππν-επξεηήξην κπνξεί λα πεξηέρεη άιια ππν-επξεηήξηα ή/θαη αξρεία. Γηα ην Unix δελ ππάξρεη νπζηαζηηθή δηαθνξά κεηαμύ επξεηεξίσλ θαη αξρείσλ γηαηί ζεσξεί ηα πάληα ζαλ έλα είδνο αξρείνπ. Έηζη νξίδνληαη ηξηώλ εηδώλ αξρεία: Τα αξρεία επξεηεξίσλ Τα ζπλεζηζκέλα αξρεία Τα εηδηθά αξρεία πνπ αληηζηνηρνύλ ζε ζπζθεπέο εηζόδνπ-εμόδνπ Εικόνα 7 - Σσπικό ζύζηημα αρτείων Unix Τν ζύζηεκα αξρείσλ ηνπ Unix νξγαλώλεηαη ζε κία δελδξηθή κνξθή όπσο ελδεηθηηθά θαίλεηαη ζηελ Εηθόλα 7. Τν παξαπάλσ ζύζηεκα αξρείσλ είλαη ελδεηθηηθό θαη κπνξεί λα δηαθνξνπνηείηαη ειαθξώο αλά έθδνζε ηνπ Unix. Ωζηόζν, ζε θάζε έθδνζε ηνπ Unix, ην επξεηήξην root απνηειεί ηελ «ξίδα» ηεο δελδξηθήο δνκήο. Επηπιένλ, ηo Unix νξίδεη δηάθνξνπο ρξήζηεο, θαζώο θαη νκάδεο ρξεζηώλ. Σε θάζε ζύζηεκα Unix, ππάξρεη έλαο ρξήζηεο ν νπνίνο νλνκάδεηαη root θαη απνηειεί ηνλ δηαρεηξηζηή ηνπ ζπζηήκαηνο. Όηαλ έλαο ρξήζηεο ζπλδέεηαη ζηελ γξακκή εληνιώλ εκθαλίδεηαη πξηλ από ην shell, ην όλνκα ηνπ ρξήζηε, ην όλνκα ηνπ κεραλήκαηνο θαη ην ηξέρνλ επξεηήξην κε ηελ κνξθή: [ΌλνκαΦξήζηε@ΌλνκαΜεραλήκαηνο ΤξέρνλΕπξεηήξην] όπσο θαίλεηαη ζηελ Εηθόλα 8. Ο ραξαθηήξαο ~ αλαθέξεηαη ζηνλ νηθείν επξεηήξην ηνπ ρξήζηε, δειαδή ην επξεηήξην ζην νπνίν βξίζθεηαη όηαλ ζπλδεζεί ζηελ γξακκή εληνιώλ ηνπ Unix. Τν ιεηηνπξγηθό ζύζηεκα Unix Σειίδα 5
Εικόνα 8 - ύνδεζη ζηο οικείο εσρεηήριο Τν Unix νξίδεη 3 ελέξγεηεο πνπ κπνξνύλ λα πξαγκαηνπνηεζνύλ ζε έλα αξρείν: Αλάγλσζε (read/r) Τξνπνπνίεζε/ελεκέξσζε (write/w) Εθηέιεζε (execute/x) θαη θαηεγνξηνπνηεί ηνπο ρξήζηεο σο: user: ρξήζηεο πνπ απνηειεί ηνλ ηδηνθηήηε ελόο αξρείνπ group: ρξήζηεο πνπ απνηειεί κέινο ηεο νκάδαο ζηελ νπνία αλήθεη ν ηδηνθηήηεο ελόο αξρείνπ νther: νπνηνζδήπνηε άιινο ρξήζηεο Γηα θάζε κία θαηεγνξία ρξήζηε νξίδνληαη θαη ηα αληίζηνηρα 3 δηθαηώκαηα πνπ κπνξεί λα έρεη ζε θάζε αξρείν. 2.3. Ενηολές Unix 2.3.1. Η ενηολή man Κάλνληαο ρξήζε ηεο εληνιή man, κπνξνύκε λα βξνύκε πιεξνθνξίεο ζρεηηθά κε ηελ ζύληαμε θαη ρξήζε κηαο εληνιήο. Η εληνιή έρεη ηελ ζύληαμε man όνομα_ενηολής. Γηα λα επηζηξέςνπκε ζηνλ ηξέρνληα θαηάινγν παηάκε ην πιήθηξν q. 2.3.2. Η ενηολή pwd Κάλνληαο ρξήζε ηεο εληνιή pwd, κπνξνύκε λα βξνύκε ζε πνην επξεηήξην ηνπ Unix βξηζθόκαζηε (Εηθόλα 9) Εικόνα 9 - Παράδειγμα τρήζης ηης ενηολής pwd 2.3.3. Η ενηολή su Κάλνληαο ρξήζε ηεο εληνιήο su, κπνξνύκε λα αιιάμνπκε ηνλ ρξήζηε (switch user) κε ηνλ νπνίν έρνπκε ζπλδεζεί ζην Unix. Η εληνιή έρεη ηελ ζύληαμε: su Τν ιεηηνπξγηθό ζύζηεκα Unix Σειίδα 6
όνομα_τρήζηη (Εηθόλα 10). Γηα λα θάλνπκε αιιαγή ρξήζηε, ζα πξέπεη ν ρξήζηεο λα ππάξρεη θαη λα γλσξίδνπκε θαη ην θσδηθό πξόζβαζεο ηνπ. Εικόνα 10 - Παράδειγμα τρήζης ηης ενηολής su 2.3.4. Η ενηολή passwd Κάλνληαο ρξήζε ηεο εληνιήο passwd, κπνξνύκε λα αιιάμνπκε ηνλ θσδηθό πξόζβαζεο ελόο ρξήζηε. Η εληνιή έρεη ηελ ζύληαμε: passwd όνομα_τρήζηη (Εηθόλα 11). Γηα λα εθηειέζνπκε ηελ εληνιή passwd γηα έλαλ ρξήζηε (εθηόο από ηνλ δηθό καο), ζα πξέπεη λα είκαζηε ζπλδεδεκέλνη σο ρξήζηεο root. Εικόνα 11 - Παράδειγμα τρήζης ηης ενηολής passwd 2.3.5. Η ενηολή ls Κάλνληαο ρξήζε ηεο εληνιήο ls, εκθαλίδνληαη (list) ηα πεξηερόκελα ηνπ επξεηεξίνπ ζην νπνίν βξηζθόκαζηε (Εηθόλα 12). Αλ ζέινπκε λα δνύκε ηη αξρεία πεξηέρεη έλα επξεηήξην εθηόο από ηνλ ηξέρνλ, ζα πξέπεη ζηελ εληνιή ls λα βάινπκο σο όξηζκα ην πιήξεο κνλνπάηη πνπ βξίζθεηαη ην επξεηήξην (Εηθόλα 13). Εικόνα 12-1 ο παράδειγμα τρήζης ηης ενηολής ls Εικόνα 13 2 ο παράδειγμα τρήζης ηης ενηολής passwd Τν ιεηηνπξγηθό ζύζηεκα Unix Σειίδα 7
2.3.6. Η ενηολή ls l Κάλνληαο ρξήζε ηεο εληνιήο ls l, εκθαλίδνληαη (list) ηα νλόκαηα ησλ αξρείσλ πνπ ππάξρνπλ ζην επξεηήξην πνπ εξγαδόκαζηε, κε πεξηζζόηεξεο πιεξνθνξίεο γηα θάζε έλα αξρείν. Σπγθεθξηκέλα, εκθαλίδεηαη κία γξακκή γηα θάζε έλα αξρείν κε δηάθνξεο πιεξνθνξίεο, όπνπ νη πην ζεκαληηθέο είλαη νη παξαθάησ (Εηθόλα 14): Ο αξηζκόο total αλαθέξεηαη ζηνλ αξηζκό ησλ ηκεκάησλ (block) πνπ θαηαιακβάλνπλ ηα αξρεία (1 block = 512 bytes). Ο πξώηνο ραξαθηήξαο θάζε γξακκήο ραξαθηεξίδεη ην είδνο ηνπ αξρείνπ (αλ είλαη d πξόθεηηαη γηα επξεηήξην). Οη επόκελνη ελλέα ραξαθηήξεο αλά 3, νξίδνπλ ηα δηθαηώκαηα (r,w,x) πνπ έρνπλ ζην αξρείν ν ηδηνθηήηεο, ε νκάδα ηνπ ηδηνθηήηε θαη όινη νη άιινη ρξήζηεο. Αλ θάπνηνο από ηνπο ελλέα ραξαθηήξεο είλαη θελόο, απηό ζεκαίλεη όηη ν αληίζηνηρνο ρξήζηεο δελ έρεη ην αληίζηνηρν δηθαίσκα. Εικόνα 14 - Παράδειγμα τρήζης ηης ενηολής ls -l 2.3.7. Η ενηολή cd Κάλνληαο ρξήζε ηεο εληνιήο cd, αιιάδνπκε ην ηξέρνλ επξεηήξην (change directory). Η εληνιή έρεη ηελ ζύληαμε: cd όνομα_εσρεηηρίοσ (Εηθόλα 15). Γηα λα κεηαβνύκε κε ηελ παξαπάλσ εληνιή, ζε θάπνην επξεηήξην κε όλνκα π.ρ. «logrotate.d» ζα πξέπεη ην επξεηήξην «logrotate.d» λα πεξηέρεηαη κέζα ζην επξεηήξην πνπ εξγαδόκαζηε. Δηαθνξεηηθά ζα πξέπεη λα δώζνπκε ζηελ εληνιή cd σο όξηζκα ην πιήξεο κνλνπάηη πνπ βξίζθεηαη ην επξεηήξην (Εηθόλα 16). Εικόνα 15 1 ο παράδειγμα τρήζης ηης ενηολής cd Τν ιεηηνπξγηθό ζύζηεκα Unix Σειίδα 8
Εικόνα 16 2 ο παράδειγμα τρήζης ηης ενηολής cd Σε όπνην επξεηήξην θαη αλ βξηζθόκαζηε, αλ δώζνπκε ηελ εληνιή cd ρσξίο θακία παξάκεηξν (Εηθόλα 17), ηόηε κεηαθεξόκαζηε ζην νηθείν επξεηήξην (ζην επξεηήξην πνπ βξηζθόκαζηε όηαλ ζπλδεόκαζηε ζηελ γξακκή εληνιώλ ηνπ Unix). Εικόνα 17 3 ο παράδειγμα τρήζης ηης ενηολής cd Αλ εθηειέζνπκε ηελ cd.. κεηαθεξόκαζηε έλα επίπεδν πην πάλσ (Εηθόλα 18) Εικόνα 18 Παράδειγμα τρήζης ηης ενηολής cd.. 2.3.8. Η ενηολή locate Κάλνληαο ρξήζε ηεο εληνιήο locate αλαδεηνύκε έλα αξρείν. Η εληνιή έρεη ηελ ζύληαμε: locate όνομα_αρτείοσ (Εηθόλα 19). Εικόνα 19 - Παράδειγμα τρήζης ηης ενηολής cd Τν ιεηηνπξγηθό ζύζηεκα Unix Σειίδα 9
2.3.9. Η ενηολή cp Κάλνληαο ρξήζε ηεο εληνιήο cp, αληηγξάθνπκε (copy) έλα αξρείν. Η εληνιή έρεη ηελ ζύληαμε: cp αρτείο_1 αρτείο_2, όπνπ ην αξρείν_1 είλαη ην όλνκα ηνπ αξρείνπ πνπ ζέινπκε λα αληηγξάςνπκε θαη ην αξρείν_2 είλαη ην όλνκα ηνπ αληηγξακκέλνπ αξρείνπ (Εηθόλα 20). Εικόνα 20 1 ο παράδειγμα τρήζης ηης ενηολής cp Αλ έλα αξρείν ζέινπκε λα ην αληηγξάςνπκε ζε θάπνην άιιν επξεηήξην θαη όρη ζην ηξέρνλ, ηόηε ζα πξέπεη ζην 2 ν όξηζκα ηεο εληνιήο cp, λα βάινπκε ην πιήξεο κνλνπάηη πνπ ζέινπκε λα αληηγξάςνπκε ην αξρείν (Εηθόλα 21). Εικόνα 21 2 ο παράδειγμα τρήζης ηης ενηολής cp 2.3.10. Η ενηολή rm Κάλνληαο ρξήζε ηεο εληνιήο rm, δηαγξάθνπκε (remove) έλα αξρείν. Η εληνιή έρεη ηελ ζύληαμε: rm όνομα_αρτείοσ (Εηθόλα 22). Αλ ην αξρείν πνπ ζέινπκε λα Τν ιεηηνπξγηθό ζύζηεκα Unix Σειίδα 10
δηαγξάςνπκε βξίζθεηαη ζε θάπνην άιιν επξεηήξην θαη όρη ζην ηξέρνλ, ηόηε ζα πξέπεη ζην όξηζκα ηεο εληνιήο rm, λα βάινπκε ην πιήξεο κνλνπάηη πνπ βξίζθεηαη ην αξρείν πνπ ζέινπκε λα δηαγξάςνπκε. Εικόνα 22 - Παράδειγμα τρήζης ηης ενηολής rm 2.3.11. Η ενηολή mkdir Κάλνληαο ρξήζε ηεο εληνιήο mkdir, δεκηνπξγνύκε έλα λέν επξεηήξην (make directory). Η εληνιή έρεη ηελ ζύληαμε: mkdir όνομα_εσρεηηρίοσ (Εηθόλα 23). Αλ ζέινπκε λα δεκηνπξγήζνπκε έλα επξεηήξην κέζα ζε θάπνην άιιν επξεηήξην εθηόο από ην ηξέρνλ, ηόηε ζα πξέπεη ζην όξηζκα ηεο εληνιήο mkdir, λα βάινπκε ην πιήξεο κνλνπάηη πνπ ζα βξίζθεηαη ην επξεηήξην πνπ ζέινπκε λα δεκηνπξγήζνπκε. Εικόνα 23 - Παράδειγμα τρήζης ηης ενηολής mkdir 2.3.12. Η ενηολή rmdir Κάλνληαο ρξήζε ηεο εληνιήο rmdir, δηαγξάθνπκε έλα ππάξρνλ επξεηήξην (remove directory). Η εληνιή έρεη ηελ ζύληαμε: rmdir όνομα_εσρεηηρίοσ (Εηθόλα 24). Αλ ζέινπκε λα δηαγξάςνπκε έλα επξεηήξην πνπ βξίζθεηαη ζε θάπνην άιιν επξεηήξην θαη όρη ζην ηξέρνλ, ηόηε ζα πξέπεη ζην όξηζκα ηεο εληνιήο rmdir, λα βάινπκε ην πιήξεο κνλνπάηη πνπ βξίζθεηαη ην επξεηήξην πνπ ζέισ λα δηαγξάςνπκε. Εικόνα 24 - Παράδειγμα τρήζης ηης ενηολής rmdir Τν ιεηηνπξγηθό ζύζηεκα Unix Σειίδα 11
2.3.13. Η ενηολή finger Κάλνληαο ρξήζε ηεο εληνιήο finger, κπνξνύκε λα δνύκε πιεξνθνξίεο γηα έλαλ ρξήζηε, όπσο: ην πξαγκαηηθό όλνκά ηνπ, ν νηθείνο θαηάινγόο ηνπ, ηελ ηειεπηαία θνξά πνπ ζπλδέζεθε ζην ζύζηεκα, από πνύ ζπλδέζεθε θαη ην δηάζηεκα γηα ην νπνίν ήηαλ αλελεξγόο. Η εληνιή έρεη ηελ ζύληαμε: finger όνομα_τρήζηη (Εηθόλα 25) Εικόνα 25 - Παράδειγμα τρήζης ηης ενηολής finger 2.3.14. Η ενηολή ifconfig Κάλνληαο ρξήζε ηεο εληνιήο ifconfig (Εηθόλα 26), κπνξνύκε λα δνύκε πιεξνθνξίεο ζρεηηθά κε ηηο δηθηπαθέο ξπζκίζεηο ηνπ Η/Υ (IP δηεύζπλζε, κάζθα ππνδηθηύνπ, θηι). Εικόνα 26 - Παράδειγμα τρήζης ηης ενηολής ifconfig Τν ιεηηνπξγηθό ζύζηεκα Unix Σειίδα 12