Κοινότητα Ελεύθερου Λογισμικού & Λογισμικού Ανοιχτού Κώδικα ΟΠΑ
Τι είναι το Linux; Multi-user, Multitasking, Multiprocessor Has the X Windows GUI Coexists with other Operating Systems Runs on multiple platforms Includes the Source Code, anyone can modify it. A fully-networked 32/64-Bit Unix-like Operating System Unix Tools Like sed, awk, and grep (explained later) Compilers Like C, C++, Fortran, Smalltalk, Ada Network Tools Like telnet, ftp, ping, traceroute
Λίγh Ιστορία: Unix Thirty years after its creation, UNIX is still regarded as one of the most powerful, versatile and flexible operating systems in the computer world. Before learning to use UNIX, here is a brief overview of its history and the reasons why people have chosen to use it. * Created at Bell Labs in 1970 * Written in the C programming language which was developed at the same time * Supports large numbers of simultaneous users * Runs with few alterations on many hardware platforms * Simple, elegant, and easy to use (at least compared to its predecessors)
Λίγη Ιστορία: Linux Πίσω στο 1991 στην λίστα του minix... 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 Torvalds επεδίωξε να φτιάξει κάτι αντίστοιχο του εκπαιδευτικόυ Minix OS του Tanembaum, σαν hobby αρχικά, για τον υπολογιστή του αρχιτεκτονικής i386. Αυτό που δημιούργησε ήταν ένας πυρήνας για λειτουργικό σύστημα που ακολουθεί την φιλοσοφία του UNIX, με ελεύθερα διαθέσιμο κώδικα.
Λίγη Ιστορία: GNU Project Ακόμα πιο πίσω στο 1983-4, o Richard Stallman κουράστηκε να προσπαθεί να 'χακάρει' κλειστό λογισμικό για να δουλέψει όπως ήθελε και ανακοίνωσε την πρόθεσή του να δημιουργήσει το GNU Λειτουργικό Σύστημα. Επιτυχώς δημιουργήθηκαν ένας text editor (emacs) και ένας εξαιρετικά δημοφιλής και επιτυχημένος optimizing compiler για την C, o gcc. Ακολούθησε μία πληθώρα εργαλείων, στην αρχή ως εναλλακτικές σε κλειστό λογισμικό, και στη συνέχεια ό,τι φανταστεί κανείς... Ορίστηκε μία ελεύθερη άδεια, η GNU GPL License την οποία υιοθέτησαν και υιοθετούν αμέτρητοι developers για να διαθέσουν το λογισμικό τους.
GNU/Linux Είτε τους αρέσει είτε όχι...
Ανατομία ενός Linux
O Πυρήνας & οι διεπαφές του Αποτελεί την καρδιά του λειτουργικού Παρέχει την υποστήριξη των συσκευών Ο κάθε driver φορτώνεται στον kernel ο οποίος διαχειρίζεται το Ι/Ο. Τα filesystems φορτώνονται σαν drivers και ο kernel παρέχει ένα επίπεδο αφαίρεσης Παρέχει την διαχείριση μνήμης και διεργασιών Οι διεργασίες χωρίζονται σε ομάδες - threads. Αποτελεί την διεπαφή με το hardware Διαθέτει διάφορα APIs Το TCP/IP υποστηρίζεται εντός του πυρήνα
Τι βλέπει ο χρήστης Μεταξύ του πυρήνα και του χρήστη, βρίσκονται τα Shells Shell μπορεί να είναι μία γραμμή εντολών, ή ακόμα και ένα γραφικό περιβάλλον. Ο χρήστης συνδέεται σε ένα η περισσότερα shells.
Χρήστες και Ομάδες στο Linux Στο Linux οι χρήστες υπήρξαν πάντα από τις βασικές έννοιες (στα windows άργησαν..) Ο κάθε χρήστης έχει ένα δικό του UID ο root (super user) έχει uid=0 Ο κάθε χρήστης μπορεί να ανήκει σε περισσότερες από μία ομάδες, από τις οποίες κληρονομεί και δικαιώματα. Υπάρχουν ειδικοί χρήστες (συστήματος) και ομάδες (πχ audio, video, κλπ) Πολλοί χρήστες μπορούν να είναι συνδεδεμένοι ταυτόχρονα σε ένα σύστημα
Filesystems Windows -> FAT32, NTFS και παλαιότερα Linux -> υποστηρίζονται δεκάδες fs, πλέον δημοφιλή ext2, ext3, reiserfs, ext4, xfs, κά... Τα συστήματα αρχείων (filesystems) χωρίζονται σε journaling και μη. Τα journaling fs, κρατούν ένα journal, δηλαδή ένα log των αλλαγών και τις εφαρμόζουν περιοδικά, είναι πιο ανθεκτικά σε system crash. Πχ ext3-4, reiserfs, μερικώς το NTFS) Τα fs που χρησιμοποιούνται στο linux, κρατούν τα δικαιώματα των αρχείων (όπως και το NTFS)
Δομή αρχείων σε ένα Linux OS
Αναλυτικά: http://en.wikipedia.org/wiki/filesystem_hierarchy_standard
Θυμηθείτε! 1. Στο linux τα κεφαλαία από τα μικρά διαφέρουν! 2. Βλέπουμε τις καταλήξεις των αρχείων (στα windows συχνά είναι κρυμμένες) 3. Ο τύπος κάθε αρχείου καθορίζεται από το περιεχόμενο και όχι -απαραίτητα- από τις καταλήξεις. Αυτές είναι περισσότερο σαν ένας εύκολος τρόπος να τα συσχετίζουμε με προγράμματα και να καταλαβαίνουμε εύκολα τι είναι.
(Πολύ) Βασικές Εντολές ls : η αντίστοιχη της dir ή πολύ απλά το να δείτε τα περιεχόμενα του φακέλου όπου βρίσκεστε ls -l : παράμετρος της ls για να μας δείξει περισσότερες πληροφορίες man ls : η man είναι ο καλύτερος μας φίλος, μας δίνει πληροφορίες για κάθε εντολή. Για να βγούμε από το κείμενό της, πατάμε q mkdir onoma : δημιουργεί έναν φάκελο με όνομα onoma cd onoma : πηγαίνει στον φάκελο onoma cd : σκέτο το cd πηγαίνει στον αρχικό φάκελο του χρήστη (homedir) pwd : μας δείχνει σε ποιον φάκελο είμαστε τώρα cd.. : μας πηγαίνει στον παραπάνω φάκελο, το.. πάντα σημαίνει ένας φάκελος παραπάνω ls onoma : μας δείχνει τα περιεχόμενα του φακέλου onoma touch blabla : δημιουργεί ένα κενό αρχείο με όνομα blabla
(Πολύ) Βασικές Εντολές mkdir onoma/koko : φτιάχνει έναν υποφάκελο koko στον φάκελο onoma κάτω από την θέση που είμαστε ls -a onoma/koko : βλέπουμε τα περιεχόμενα του koko μαζί με τα ειδικά/κρυμμένα αρχεία (αρχεία που το όνομά τους ξεκινά από. ) ls ~ : το ~ σημαίνει το homedir του (παρόντος) χρήστη στα unix ls ~/.. : τι θα μας δείξει αυτή η εντολή; passwd : αλλάζουμε το password μας who : βλέπουμε τα συνδεδεμένα shells (cli, X, ssh,...) w : βλέπουμε ότι και το who, αλλά και το πρόγραμμα που εκτελείται από το εκάστοτε shell su : εάν έχουμε το root password, με su και εισαγωγή του γινόμαστε root (έχουμε δηλαδή full δικαιώματα). (Αυτό είναι μία σκέτη εντολή)./somescript : εκτελεί το script somescript που βρίσκεται στον φάκελο που είμαστε
(Πολύ) Βασικές Εντολές cp koko lala : αντιγράφει το αρχείο koko στο αρχείο lala mv koko lala : μετονομάζει (move) το αρχείο koko σε αρχείο lala cp /usr/local/bin/koko lala : αντιγράφει το αρχείο koko από τον φάκελο /usr/local/ bin/ σε αυτόν που βρισκόμαστε, με το όνομα lala rm koko. : διαγράφει το αρχείο koko rmdir koko ή rm -r koko : διαγράφει τον φάκελο koko rmdir koko cat koko : μας κάνει print όλα τα περιεχόμενα (text ή binary σκουπίδια) του αρχείου koko less koko : βλέπουμε τα περιεχόμενα (όπως cat) αλλά μπορούμε να πάμε πάνω κάτω, να ψάξουμε. Έξοδος με q./somescript less : το είναι φοβερό εργαλείο: 'ταΐζει' τα αποτελέσματα εδώ του somescript στο less, το οποίο και τα δείχνει λίγα λίγα.
Redirections, pipes, etc Χρήσιμα για την είσοδο και έξοδο δεδομένων από αρχεία/διεργασίες προς αρχεία ή διεργασίες είναι τα εξής: somecommand > log.txt : τα αποτελέσμετα της somecommand πάνε στο αρχέιο log.txt (και διαγράφουν ό,τι υπάρχει) somecommand >> log.txt : τα αποτελέσματά της προστίθενται στο τέλος του log.txt (concatenation) somecommand < input : η somecommand παίρνει σαν είσοδο το αρχέιο input somecommand someothercommand : η έξοδος της εντολής somecommand πηγαίνει ως είσοδος στην εντολή someothercommand somecommand & : καλεί την somecommand και την εκτελεί στο 'παρασκήνιο' somecomand && someothercommand : καλεί την somecommand και εάν αυτή τελειώσει επιτυχώς εκτελεί και την someothercommand
Βασικά περί δικαιωμάτων Τα δικαιώματα αρχείων και φακέλων στο unix (που είδαμε με το ls -l) ακολουθούν την βασική αυτή λογική: [d κλπ][rwx][rwx][rwx]: d εάν είναι πχ φάκελος (άλλα γράμματα σε άλλες ειδικές περιπτώσεις που δεν μας χρειάζονται τώρα) ή εάν είναι απλά αρχείο Το πρώτο [rwx] αφορά τον χρήστη και σημαίνει read, write, και execute. Αφορά προφανώς το να βλέπει ο χρήστης το αρχείο, να το γράφει και να μπορεί να το εκτελεί εάν είναι πρόγραμμα Το δεύτερο αφορά την ομάδα του χρήστη και το τρίτο τους 'άλλους'. Πχ, τι δικαιώματα έχει η εκάστοτε κατηγορία σε αυτήν την περίπτωση; -rw-r--r--
Βασικά περί δικαιωμάτων - Τα δικαιώματα εκφράζονται και ως εξής: Read : 4, write: 2, execute : 1 και αυτά προστίθενται ώστε να βγαίνει αυτό: Number Read (R) Write (W) Execute (X) 0 No No No 1 No No Yes 2 No Yes No 3 No Yes Yes 4 Yes No No 5 Yes No Yes 6 Yes Yes No 7 Yes Yes Yes 777 σημαίνει rwxrwxrwx 755 σημαίνει rwxr-xr-x 666 σημαίνει rw-rw-rw-
Βασικά περί δικαιωμάτων Η εντολή με την οποία αλλάζουμε δικαιώματα σε ένα αρχείο είναι η chmod και αυτή δέχεται και τα δύο formats: chmod 755 file.txt αυτό θα δώσει permissions rwxr-xr-x στο αρχείο file.txt Chmod u+x file.txt Αυτό θα κάνει τον χρήστη (u) να έχει + execute σε ό,τι δικαιώματα είχε Chmod g=rx file Αυτό θα κάνει την ομάδα του χρήστη να έχει δικαιώματα read και execute Chmod o-w file Οι άλλοι (others) δεν θα έχουν write στο αρχείο Chmod -R folder/
Λίγες ακόμα εντολές.. ps : δείτε τις διεργασίες που τρέχουν σε αυτό το shell (login) ps aux : όλες οι διεργασίες από όλους τους χρήστες στο σύστημα kill 5533 : τερματισμός διεργασίας με αριθμό 5533 (pid, process id) killall firefox : σκοτώνει όλους του firefox (εφόσον έχουμε δικαιώματα) xkill : το πιο δημοφιλές Shoot 'em up game! (Προσοχή! Θα σκοτώσει όποια διεργασία κάνετε κλικ πάνω στο παράθυρό της! Για έξοδο πατάτε Esc) Δείτε επίσης: grep, find, du, df, zcat, gzip,... Γενικά αρχίστε το ψάξιμο!!!