Μάθε παιδί μου Linux (μέρος 6) | Το σύστημα αρχείων και φακέλων του Linux


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

Η επεξήγηση είναι απαραίτητη καθώς πολλοί από από τους φακέλους έχουν "εξωτικά" ονόματα που μπορεί να μας παραπέμψουν σε κάτι το οποίο στην πραγματικότητα δεν ισχύει. Για παράδειγμα στο φάκελο "usr" (από το "user") δεν περιλαμβάνονται τα αρχεία των χρηστών του Linux, ενώ ο φάκελος "bin" (σημαίνει "κάδος σκουπιδιών" στα αγγλικά) δεν είναι ο κάδος απορριμάτων του συστήματος.

Ο φάκελος "Home" περιέχει τα προσωπικά σου αρχεία


Σε όλα τα Linux λειτουργικά συστήματα θα βρούμε το φάκελο "home" μέσα στον οποίο αποθηκεύονται τα προσωπικά αρχεία όλων των χρηστών. Μέσα στον "home" δημιουργούνται τόσοι υποφάκελοι όσοι είναι και οι χρήστες με τους οποίους κάνουμε login. Για παράδειγμα αν έχουμε δύο χρήστες στον υπολογιστή μας με τα username "Kallis" και "Chris", στο φάκελο "home" θα δημιουργηθούν αντίστοιχα οι υποφάκελοι "Kallis" και "Chris". 

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

Πάμε τώρα μέσα στο φάκελο του κάθε χρήστη όπου θα βρούμε το ακόλουθο σετ φακέλων:

  • Desktop (Επιφάνεια εργασίας)
  • Documents (Έγγραφα)
  • Downloads (Λήψεις)
  • Music (Μουσική)
  • Pictures (Εικόνες)
  • Public (Δημόσια)
  • Templates (Πρότυπα)
  • Videos (Βίντεο)


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

Ο φάκελος "home" λοιπόν είναι αυτός που περιέχει όλα μας τα δεδομένα, άρα είναι και αυτός από τον οποίο θα πρέπει να παίρνουμε τακτικά backup αν δε θέλουμε να τα χάσουμε. Ο πιο εύκολος τρόπος για να το κάνουμε αυτό είναι με την εντολή "tar" η οποία θα συμπιέσει το φάκελό μας. Μπαίνουμε αρχικά στο φάκελο "home" με την εντολή:

cd /home/

Αν για παράδειγμα το username στον υπολογιστή μας είναι "chris" (άρα και ο φάκελος με τα προσωπικά του αρχεία ονομάζεται "chris") τότε η εντολή για να πάρουμε backup είναι η εξής:

sudo tar czf backup.tar.gz chris

Μόλις τελειώσει η διαδικασία θα βρούμε στον ίδιο φάκελο το συμπιεσμένο αρχείο με όνομα "backup.tar.gz", το οποίο μπορούμε να μεταφέρουμε στη συνέχεια σε έναν εξωτερικό δίσκο.

Διαφήμιση

Φάκελοι εφαρμογών, ρυθμίσεων και συσκευών


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

/bin


Ο φάκελος "bin" (εκ του "binaries") περιλαμβάνει κάποια από τα πιο βασικά εργαλεία του συστήματος, πολλά απο τα οποία είδαμε στο άρθρο για τις βασικές εντολές του Linux. Αν τον ανοίξουμε θα δούμε για παράδειγμα:

  • το "tar" με το οποίο προηγουμένως συμπιέσαμε το φάκελο "home",
  • το "ls" με το οποίο όπως είδαμε παλιότερα μπορούμε να δούμε τη λίστα αρχείων ενός φακέλου και
  • το "touch" με το οποίο μπορούμε να δημιουργήσουμε νέα αρχεία.


/dev


Ο φάκελος "dev" (εκ του "devices") περιέχει αρχεία που έχουν να κάνουν με τις συσκευές που συνδέουμε στον υπολογιστή μας. Πολλά από αυτά δημιουργούνται κατά την εκκίνηση, ενώ άλλα εμφανίζονται μόλις συνδέσουμε για παράδειγμα ένα δίσκο USB ή μία USB κάμερα.

/etc 


Ο φάκελος "etc" (εκ του "et cetera" που σημαίνει "και τα λοιπά") είναι κατάλοιπο του συστήματος Unix στο οποίο βασίζεται το Linux και το Mac OS. Όπως προδίδει και η ονομασία σε αυτό τον φάκελο πήγαιναν όλα τα αρχεία συστήματος, τα οποία δεν ταίριαζαν κάπου αλλού.

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

/lib


Στο φάκελο "lib" (εκ του "libraries") βρίσκονται οι βιβλιοθήκες που χρησιμοποιούν οι εφαρμογές μας. Οι προγραμματιστές Linux εφαρμογών δεν πακετάρουν στα προγράμματά τους τις βιβλιοθήκες που γνωρίζουν ότι θα βρουν σε κάθε Linux σύστημα (αυτό έχει αλλάξει λίγο με τα αρχεία snap, flatpak και AppImage). Αντ' αυτού ρυθμίζουν την εφαρμογή τους αναζητά στο φάκελο "lib" τις βιβλιοθήκες που χρειάζεται. Έτσι το σύστημα είναι πάντα τακτοποιημένο και δεν υπάρχουν διπλότυπα αρχεία σε αυτό.

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


/media 


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

/mnt 


Ο φάκελος "mnt" (εκ του "mount") είναι ένα κατάλοιπο παλιότερων εκδόσεων του Linux, το οποίο δε χρησιμοποιείται ιδιαίτερα πλέον. Εκεί συνηθίζεται να προσαρτούμε χειροκίνητα τους εξωτερικούς δίσκους που συνδέουμε στο σύστημά μας. Αν θέλεις για παράδειγμα το Raspberry Pi σου να βλέπει τον εξωτερικό σου δίσκο αυτόματα μετά από επανεκκίνηση, θα πρέπει να το ρυθμίσεις χειροκίνητα. Πάντως δεν είναι δεσμευτικό, καθώς μπορούμε να κάνουμε κάτι τέτοιο σε οποιονδήποτε φάκελο μας βολεύει.

/proc


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


/opt 


Στο φάκελο "opt" συνηθίζεται να αποθηκεύεται το λογισμικό που κάνεις μόνος σου compile στον υπολογιστή σου από τον πηγαίο κώδικα. Οι εφαρμογές που εγκαθίστανται με αυτό τον τρόπο πηγαίνουν στον υποφάκελο "/opt/bin", ενώ αντίστοιχα οι βιβλιοθήκες που χρησιμοποιούν αποθηκεύονται στον "/opt/lib". 

Σημείωση:
Σε κάποιες περιπτώσεις οι εφαρμογές που εγκαθίστανται με compile από τον πηγαίο κώδικα πηγαίνουν στο φάκελο "/usr/local". Το πού θα εγκατασταθεί η κάθε εφαρμογή, εξαρτάται από τον προγραμματιστή που την έχει γράψει.

/sbin


Ο φάκελος "sbin" είναι παρόμοιος με τον "bin" αλλά περιλαμβάνει εφαρμογές που μόνο ο χρήστης "superuser" μπορεί να χρησιμοποιήσει. Όταν για παράδειγμα δίνουμε εντολές βάζοντας μπροστά το "sudo", τις εφαρμογές αυτού του φακέλου καλούμε για να χρησιμοποιήσουμε.

/usr 


Στον φάκελο "usr" (εκ του "user") βρίσκονταν κάποτε οι προσωπικοί φάκελοι όλων των χρηστών του Linux, οι οποίοι πλέον είναι στο "home". Ο "usr" λοιπόν περιλαμβάνει τώρα διάφορα πράγματα τα οποία χρησιμοποιούνται κοινά από εφαρμογές και διεργασίες του συστήματος όπως αρχεία, εφαρμογές, βιβλιοθήκες, εικονίδια, φόντα και άλλα. Στον ίδιο φάκελο θα βρούμε ξανά το "bin", καθώς εκεί αποθηκεύονται οι εφαρμογές που εγκαθιστούμε εμείς οι χρήστες στο σύστημά μας όπως ο επεξεργαστής αρχείων και ο browser.

Σημείωση:
Σε πολλές σύγχρονες διανομές όπως το Arch Linux, ο φάκελος "/bin" παραπέμπει απλά στον "/usr/bin" στον οποίο είναι αποθηκευμένες όλες οι εφαρμογές. 


/srv


Ο φάκελος "srv" περιλαμβάνει αρχεία για server. Αν για παράδειγμα τρέχουμε έναν web server όπως το Wordpress στο σύστημά μας, τα αρχεία των website που θα δημιουργήσουμε, θα τα βρούμε στο "/srv/http" ή στο "/srv/www". Αντίστοιχα αν τρέχουμε έναν FTP server, τα αρχεία του θα πάνε στο φάκελο "/srv/ftp".

/tmp


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

Ο φάκελος "tmp" είναι επίσης από τους ελάχιστους φακέλους που βρίσκονται στο root του δίσκου μας, με στον οποίο μπορούμε να έχουμε πρόσβαση χωρίς δικαιώματα "superuser".  Μπορούμε λοιπόν να αποθηκεύσουμε εκεί και τα δικά μας προσωρινά αρχεία!

/var


Ο τελευταίος φάκελος είναι ο "var" (εκ του "variable") και δημιουργήθηκε με σκοπό να περιλαμβάνει μεταβλητά αρχεία και όχι μόνιμα. Πλέον αυτά τα μεταβλητά αρχεία βρίσκονται παντού στο σύστημα οπότε το όνομα είναι λίγο άκυρο.

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

Τέλος στο φάκελο "var" αποθηκεύονται προσωρινές εργασίες όπως η ουρά εγγράφων ενός κοινόχρηστου εκτυπωτή (μέσω CUPS), ένα email που βρίσκεται στην αναμονή για αποστολή στους χρήστες του συστήματος ή ένας κανόνας που έχουμε δημιουργήσει με το Cron.


Διαφήμιση

Οι φάκελοι που δεν πρέπει να αγγίξεις ποτέ!


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

/boot 


Ο φάκελος "boot" περιλαμβάνει όλα τα απαραίτητα αρχεία για την εκκίνηση του συστήματος. Είναι ο νούμερο ένα φάκελος που δεν πρέπει ποτέ να αγγίξουμε, αλλά ευτυχώς αυτό δεν μπορεί να γίνει κατά λάθος, καθώς χρειαζόμαστε δικαιώματα διαχειριστή ("superuser") για να τον διαγράψουμε.


/root 


Ο φάκελος "root" είναι στην ουσία το "home" του χρήστη "superuser". Βρίσκεται σε διαφορετική τοποθεσία από τους άλλους χρήστες γιατί είναι από τους φακέλους που δεν πρέπει να πειράζουμε ποτέ! 

/run


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

/sys


Ο φάκελος "sys" μοιάζει και αυτός με τον "proc" και τον "dev", καθώς περιλαμβάνει γενικές πληροφορίες του συστήματος που αφορούν όμως τις συσκευές που έχουμε συνδεδεμένες στον υπολογιστή μας. Εδώ μπορούμε για παράδειγμα να πειράξουμε χειροκίνητα τη φωτεινότητα του υπολογιστή μας αλλάζοντας τις τιμές στο αρχείο "/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-eDP-1/intel_backlight/brightness"

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


Εν κατακλείδι


Επειδή το Linux εξελίσσεται και οι ανάγκες κάθε διανομής είναι διαφορετικές, θα βρούμε σίγουρα και άλλους φακέλους στο root του δίσκου μας. Για παράδειγμα το Ubuntu έρχεται με την υπηρεσία "snapd" προεγκατεστημένη, οπότε εκεί θα βρούμε το φάκελο "snap" μέσα στον οποίο αποθηκεύονται οι εφαρμογές και οι ρυθμίσεις της υπηρεσίας.

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


Σχόλια

Δείτε επίσης...

Ιδιωτικό απόρρητο | Το αφελές επιχείρημα του ''Δεν έχω τίποτα να κρύψω''

Android | Γιατί δε θα αγόραζα ποτέ smartphone της OnePlus

Φεύγω από την Google (μέρος 15) | ''Ξηλώνουμε'' τα Google apps από το Android

Docker (μέρος 7) | Στήνουμε έναν reverse proxy για τα container μας με το Traefik

Μάθε παιδί μου Linux (μέρος 11) | Δίσκοι, κατατμήσεις και σύστημα αρχείων (filesystem)

Απόρρητο | ''Μπερδεύουμε'' τον αλγόριθμο Google και Facebook με ψεύτικες πληροφορίες

Ubuntu Touch 2020 review | Μια πραγματική mobile GNU/Linux διανομή έτοιμη για καθημερινή χρήση

Android | Περιόρισε την παρακολούθηση των εφαρμογών και κόψε τις διαφημίσεις με το TrackerControl

Docker (μέρος 1) | Τι είναι και πώς το εγκαθιστούμε στον υπολογιστή μας;

Android | Βάλε στην ''απομόνωση'' τις εφαρμογές που δεν εμπιστεύεσαι με το Shelter