Πως είναι διαμορφωμένο το σύστημα αρχείων του Linux;

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

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

Στο linux όλα ξεκινάνε από τον αρχικό κατάλογο «/», γνωστό και σαν ρίζα (root). Μέσα σε αυτόν υπάρχουν όλοι οι άλλοι δημιουργώντας έτσι μια δομή που μοιάζει με ένα ανάποδο δέντρο. Αυτή η δομή είναι αρκετά διαφορετική και πιο λίγο σωστά οργανωμένη από την δομή των Windows που έχουμε συνηθίσει. Για αυτούς που έρχονται από τον κόσμο του Windows είναι ότι βλέπετε όταν ανοίξετε τον δίσκο *C:* . πχ στους φακέλους C:\Windows και C:\Windows\system, ενώ για τις εγκατεστημένες εφαρμογές πρέπει να πάμε στον κατάλογο C:\Program Files.


Αντιστοιχία θέσεων πχ Firefox στο Linux και Windows

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


Τυπική δομή καταλόγων του συστήματος αρχείων στο Linux

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

Γενική περιγραφή καταλόγων του συστήματος αρχείων στο Linux

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

/ (κατάλογος-ρίζα)

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

/bin

Στον κατάλογο bin (binaries) βρίσκονται τα απολύτως απαραίτητα εκτελέσιμα αρχεία προγραμμάτων που χρειάζονται για να ξεκινήσει ο υπολογιστής και να προσαρμόσει τα υπόλοιπα συστήματα αρχείων (/usr, /home, /opt).

/opt

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

/boot

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

/root

Αυτός είναι ο κατάλογος του χρήστη root δηλαδή του υπερχρήστη που έχει το δικαίωμα να κάνει οτιδήποτε στο σύστημα. Στις μέρες μας δεν χρησιμοποιείται πολύ και προτιμάται ο μηχανισμός sudo. Μπορεί να διερωτηθείτε γιατί βρίσκεται αυτός ο κατάλογος εδώ και όχι μέσα στο /home μιας και όπως θα δούμε όλοι οι χρήστες βρίσκονται στο /home. Ο λόγος είναι ότι το /home μπορεί να είναι σε άλλο δίσκο (μιας και θέλει πολύ χώρο σε ένα σύστημα με πολλούς χρήστες) ή ακόμα σε ανά απομακρυσμένο υπολογιστή. Αν για παράδειγμα υπάρξει πρόβλημα στους απομακρυσμένους φακέλους των χρηστών ο διαχειριστής (root) θα μπορεί να μπει και να το διορθώσει.

/dev

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

/sbin

Ο κατάλογος /sbin (super user binaries) διαφέρει απο τον κατάλογο /bin στο ότι τα προγράμματα που υπάρχουν μέσα, εκτελούνται μόνο από τον διαχειριστή του συστήματος στην περίπτωση που θέλει να ανακτήσει η επιδιορθώσει το σύστημα.

/etc

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

/srv

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

/home

O κατάλογος home είναι ο αντίστοιχος κατάλογος «Users/ Documents and Settings» που έχουμε στο Windows. Μέσα σε αυτόν υπάρχουν οι φάκελοι των λογαριασμών των χρηστών του υπολογιστή. Μέσα σε κάθε ένα από αυτά, υπάρχουν τα προσωπικά αρχεία του χρήστη πχ. εικόνες, έγγραφα, μουσική, βίντεο κτλ. αλλά και οι ρυθμίσεις των προγραμμάτων που χρησιμοποιεί ο χρήστης. Παράδειγμα αν πάρουμε αντίγραφο του φακέλου του χρήστη και τον μεταφέρουμε σε άλλο υπολογιστή με τα ίδια προγράμματα εγκατεστημένα, ο χρήστης θα έχει τις ρυθμίσεις των προγραμμάτων του σαν να μην άλλαξε υπολογιστή. Σε γενικές γραμμές ο χρήστης μπορεί να πειράξει ότι θέλει μέσα στον προσωπικό του φάκελο. Για αλλαγές εκτός αυτής της περιοχής απαιτείται συνήθως η χρήση της εντολής sudo.

/tmp

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

/lib

Στον κατάλογο lib (libraries) θα βρούμε τις βιβλιοθήκες, που είναι κάτι αντίστοιχο με τα αρχεία DLL των Windows. Οι βασικές βιβλιοθήκες που χρησιμοποιούν τα προγράμματα που βρίσκονται στο /bin, που αναφέραμε πιο πάνω, θα βρεθούν εδώ.

/usr

Σε αυτόν τον κατάλογο θα βρούμε όλες τις εφαρμογές, βιβλιοθήκες, documentation κτλ. που έχει εγκαταστήσει ο χρήστης του συστήματος και είναι κάτι σαν το αντίστοιχο Programs Files του Windows. Η δομή του, ακολουθεί αυτήν του «/» και θα βρούμε μέσα αντίστοιχους υποκαταλόγους όπως /usr/bin, /usr/lib. Ιδιαίτερη μνεία θέλει ο κατάλογος /usr/share όπου θα βρούμε αρχεία βοηθητικά των προγραμμάτων (εικονίδια, themes κλπ) που είναι ανεξάρτητα της αρχιτεκτονικής του υπολογιστή.

/media

Σε αυτόν τον κατάλογο προσαρτώνται οι «αποσπώμενες» συσκευές όπως εξωτερικοί σκληροί δίσκοι, τα usb sticks, οι συσκευές cd/dvd κτλ. Αν δηλαδή συνδέσουμε ένα εξωτερικό σκληρό δίσκο στον υπολογιστή μας τότε αυτόματα το σύστημα τον ενσωματώνει (με την εντολή mount) σε αυτόν τον κατάλογο και μετά από αυτήν την διαδικασία συνήθως εμφανίζεται ένας φάκελος στην επιφάνεια εργασίας ή στο πρόγραμμα περιήγησης καταλόγων (file manager)

/var

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

/mnt

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

/proc

Αυτός είναι ένας ιδιαίτερα μαγικός κατάλογος. Σε αυτόν τον κατάλογο θα βρούμε εικονικά αρχεία σχετικά με πληροφορίες του συστήματος και του πυρήνα Linux. Είπαμε πιο πάνω ότι στο Linux οι συσκευές μας είναι αρχεία. Εδώ λοιπόν θα βρούμε τα αρχεία που αντιστοιχούν στις συσκευές του υπολογιστή μας και οι οποίοι είναι ενεργοί. Για παράδειγμα το «αρχείο» /proc/cpuinfo περιέχει πληροφορίες για τον επεξεργαστή και με ένα απλό επεξεργαστή κειμένου το ανοίγεις και βλέπεις τι επεξεργαστή έχεις.

/run

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

/sys

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

/lost+found

Κάθε φορά που ξεκινάει ο υπολογιστής μας, κάνει έναν γρήγορο έλεγχο του δίσκου για «χαμένα» αρχεία (π.χ. από διακοπή ρεύματος). Αυτά τα αρχεία πηγαίνουν στον φάκελο lost+found. Με άλλα λόγια είναι ο κατάλογος στον οποίο το πρόγραμμα fsck (έλεγχος συστήματος αρχείων) θα βάλει τα αρχεία που αποκαθιστά από ορφανά block του δίσκου.

Περί του χρήστη root και της εντολής sudo

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

Έστω λοιπόν ότι έχεις έναν υπολογιστή σε κάποια τράπεζα η ένα πανεπιστήμιο. Θα πρέπει να έχει τρελή εμπιστοσύνη σε αυτόν που χρησιμοποιεί και έχει τον κωδικό αυτού του χρήστη! Έτσι για να κάνεις κάποια πράγματα όπως να αλλάξεις κάτι το /usr/local χρειαζόσουν τα δικαιώματα του χρήστη root. Γιατί θες να κάνεις κάτι τέτοιο; μα για να εγκαταστήσεις ένα πρόγραμμα. Αν για κάποιο λόγο έφευγε ένας διαχειριστής από ένα τέτοιο ίδρυμα (τράπεζα, πανεπιστήμιο κλπ) ο κωδικός θα έπρεπε να αλλάξει άμεσα. Επίσης σαν άρχοντας του συστήματος, οι ενέργειες και οι δραστηριότητες του δεν καταγράφονταν πουθενά.

Λύση σε αυτά τα προβλήματα έδωσε ο μηχανισμός sudo (super user do). Με αυτόν τον τρόπο μπορεί ένας χρήστης να αποκτήσει πλήρως ελεγχόμενες δυνάμεις και οι ενέργειες του καταγράφονται αλλά και να υπάρχουν διαφορετικές διαβαθμίσεις διαχειριστών. Πλέον ο root χρησιμοποιείται ουσιαστικά μόνο όταν το σύστημα είναι σε μη εκκινήσιμη κατάσταση και θέλει επισκευή.

Περί του /usr και του /opt

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

Γιατί στο /usr και όχι στο /opt? Το δεύτερο είναι για «μεγάλα» προγράμματα, για σουίτες όπως θα λέγαμε στα windows. Κανονικά το libreoffice, το firefox, το kde και τα γραφικά περιβάλλοντα, θα έπρεπε να ήταν εδώ. Παρόλα αυτά είναι αρκετές οι διανομές που «παραβιάζουν» αυτόν τον κανόνα.

Περί του bin και share

Ένα πρόγραμμα έχει συνήθως πολλά αρχεία. Εκτός από το εκτελέσιμο μπορεί να έχει ένα man page, κάποιο εικονίδιο και σύστημα βοήθειας, καθώς και αρχεία με δεδομένα, cliparts, βούρτσες (π.χ. gimp). Φαντάσου τώρα ότι παίρνεις έναν άλλο υπολογιστή που δεν τρέχει κάποιο intel αλλά έχει κάποιον εξωτικό επεξεργαστή. Το εκτελέσιμο θα αλλάξει και θα είναι διαφορετικό, αλλά τα άλλα αρχεία είναι «ανεξάρτητα αρχιτεκτονικής» και θα μείνουν ίδια. Αυτά που αλλάζουν πάνε στο /X/bin αυτά που μένουν ίδια στο /X/share.

Αν υπάρχει ένας κεντρικός υπολογιστής με ένα δίσκο θα έχει ένα φάκελο με το share και πολλοίς με το bin για τις διάφορες αρχιτεκτονικές (intel,arm, sparc,…) και θα συναρμολογήσει κάθε μηχάνημα το σύστημα αρχείων όπως το θέλει.

Περί της κατάργησης των παραπάνω

Ίσως κάποιοι απο τους φακέλους που είδαμε να μην υπάρχουν στην διανομή σας. Τελευταία, λόγω και μια μικρής ιδιοτροπίας του systemd, υπάρχει μια τάση απλοποίησης με το /bin να είναι συντόμευση στο /usr/bin και οι κατάλογοι sbin να καταργηθούν. Το σίγουρο είναι ότι θα υπάρξουν αλλαγές στο μέλλον. Φήμες λένε άλλωστε πως ο κατάλογος /usr φτιάχτηκε στα πρώτα UNIX γιατί απλά γέμισε ο εσωτερικός δίσκος.

Επίλογος

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

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

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

28 «Μου αρέσει»

Μια περίληψη-περιγραφή των καταλόγων του Linux, σε 100 δευτερόλεπτα!

10 «Μου αρέσει»

6 «Μου αρέσει»