*

Αποστολέας Θέμα: Εισαγωγή στο σύστημα αρχείων του Linux  (Αναγνώστηκε 7910 φορές)

Αποσυνδεδεμένος Constantine

  • Mint Guru
  • *****
  • Μηνύματα: 653
  • Thanked: 14 times
  • Karma: 8
  • Net is vast and infinite
    • Προφίλ
Εισαγωγή στο σύστημα αρχείων του Linux
« στις: Μάρτιος 02, 2016, 12:46:58 πμ »
                                                                                     
Σε όλα τα λειτουργικά συστήματα υπάρχει ενα σύστημα αρχείων που σκοπό έχει να οργανώσει όλα τα δεδομένα του υπολογιστή, τα δεδομένα αυτά για να γίνει καλύτερη η διαχείριση τους μοιράζονται σε καταλόγους που περιέχουν ομοειδή αρχεία.Οι κατάλογοι μπορούν να είναι οργανωμένοι σε ένα ή σε πολλά επίπεδα δημιουργώντας έτσι ένα δενδροειδές σύστημα, για να το εξηγήσουμε πιο απλά φανταστείτε οτι έχετε μια βιβλιοθήκη με ντοσιέ και μέσα σε αυτά υπάρχουν μέσα φάκελοι.
Στο linux όλα ξεκινάνε από τον αρχικό κατάλογο "/", γνωστό και σαν ρίζα (root).  Μέσα σε αυτόν υπάρχουν όλοι οι άλλοι δημιουργώντας έτσι μια δομή που μοιάζει με ένα ανάποδο δέντρο. Αυτή η δομή είναι αρκετα διαφορετική και πιο λίγο  σωστά οργανωμένη απο  την δομή των Windows που έχουμε συνηθίσει πχ C:\Windows και C:\Windows\system ενώ για τις εγκατεστημένες εφαρμογές πρέπει να πάμε στον κατάλογο  C:\Program Files.
Μια γνώση της δομής του ανάποδου αυτού δέντρου είναι χρήσιμη για να μπορέσουμε να κάνουμε κάποια πιο προχωρημένα πράγματα, αλλά και για να καταλάβουμε καλύτερα πως δουλεύει ο υπολογιστής αν σηκώσουμε το χαλί του GUI.




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

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

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

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

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

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

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

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

/home
O  κατάλογος home είναι ο αντίστοιχος κατάλογος My documents που έχουμε  στα Windows, μέσα σε αυτόν υπάρχουν τα προσωπικά αρχεία του χρήστη πχ.  εικόνες, έγγραφα, μουσική, βίντεο κτλ. Σε γενικές γραμμές εδώ μέσα μπορεί να πειράξει ενας χρήστης. Για αλλαγές εκτός αυτής της περιοχής απαιτείται συνήθως η χρήση της εντολής sudo.

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

/mnt
Σε αυτόν τον κατάλογο  προσαρτώνται οι συσκευές, σκληροί δίσκοι, οι δίσκοι usb, οι συσκευές cd/dvd κτλ. με την εντολή mount, δηλαδή βάζουμε ένα εξωτερικό σκληρό δίσκο στον υπολογιστή το σύστημα τον ενσωματώνει με την εντολή mount και μετά απο αυτήν την διαδικασία μπορούμε να τον χρησιμοποιήσουμε.

/tmp
Σε αυτόν τον κατάλογο ο οποίος είναι βοηθητικός  αποθηκεύονται προσωρινά κάποια αρχεία.

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

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

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


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


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

Περί του /usr και του /opt
O προσεκτικός αναγνώστης θα παρατηρήσει πως ουσιαστικά η δομή του συστήματος αρχείων επαναλαμβάνετε σε αυτούς τους καταλόγους. Ο λόγος για το /usr είναι οτι μπορεί να είναι σε ενα κεντρικο υπολογιστή πχ σε ενα σχολικό εργαστήριο. Επειδή εκεί ειναι όλα τα προγράμματα αυτά μπορεί να είναι συγκεντρωμένα σε ενα μέρος και να αναβαθμίζονται κεντρικά. Το /bin θα πρέπει να περιέχει τα απολύτως απαραίτητα ώστε να γίνει αυτή η προσάρτηση. Ο φάκελος /usr/local περιέχει προγράμματα που έχουμε βάλει εμεις στο σύστημα με την διαδικασία της μεταγλώττισης απο τον πηγαίο κώδικα. Είναι λοιπόν ευθύνη δικιά μας (μιας και εμεις είμαστε οι διαχειριστές) να ενημερώνουμε και να συντηρούμε αυτά τα προγράμματα.
Γιατι εδώ και όχι στο /opt? Το δευτερο είναι για "μεγάλα" προγράμματα, για σουίτες όπως θα λέγαμε στα windows. Κανονικά το libreoffice, το firefox,  το kde και και cinnamon θα έπρεπε να ήταν εδώ. Αλλά παραβιάζουν πολλές διανομές αυτόν τον κανόνα μαζι με το Mint.

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


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

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

Περί του LFHS
Όποιος ενδιαφέρετε περισσότερα ας μελετήσει το LFSH που θα το βρει εδώ.
https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
http://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.html
http://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.pdf


Ευχαριστώ τον Talos για κάποιες διευκρινήσεις.
« Τελευταία τροποποίηση: Μάρτιος 02, 2016, 09:20:55 πμ by talos »
Λίστα ΟδηγώνΧρήσεων - Οδηγός Χρήσης του linuxmint.gr - Οδηγός Χρήσης ΒΒcode
Desktop
System:Linux Mint 17.3 Cinnamon, Kernel: 3.19.0-32-generic  64bit
CPU i5 6600 || VGA: AMD R9 380|| Ram:8GB||motherboard:Gigabyte Z170-HD3P
The following users thanked this post: grzoo, versys650gr

Αποσυνδεδεμένος lucinos

  • Great Mint Guru
  • ******
  • Μηνύματα: 824
  • Thanked: 37 times
  • Karma: 29
    • Προφίλ
Απ: Εισαγωγή στο σύστημα αρχείων του Linux
« Απάντηση #1 στις: Μάρτιος 02, 2016, 04:00:51 πμ »

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

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

εδώ έχεις ένα λαθάκι νομίζω. Εϊναι ο /bin/ που «καταργείται» και γίνεται σύνδεσμος στον /usr/bin/ και όχι ο /usr/ στον /usr/bin/

ένα άλλο θέμα είναι, μήπως θα ήταν καλύτερα να μην χρησιμοποιούμε εδώ τον όρο «σύστημα αρχείων» (αλλά «ιεραρχία (φακέλων)») ώστε να τον κρατάμε για τα συστήματα αρχείων (ext4, fat32, ntfs, btrfs, xfs, zfs κλπ)
« Τελευταία τροποποίηση: Μάρτιος 02, 2016, 06:28:42 πμ by lucinos »

Αποσυνδεδεμένος versys650gr

  • [̲̅v̲̅][̲̅e̲̅][̲̅r̲̅][̲̅s̲̅][̲̅y̲̅][̲̅s̲̅][̲̅6̲̅][̲̅5̲̅][̲̅0̲̅][̲̅g̲̅][̲̅r̲̅]
  • Administrator
  • Guru Meditation
  • ******
  • Μηνύματα: 3443
  • Thanked: 13 times
  • Karma: 90
  • ĿĪИƱӾ MĪИƬ Ŀ♡ѴƐŔ
    • Προφίλ
Απ: Εισαγωγή στο σύστημα αρχείων του Linux
« Απάντηση #2 στις: Μάιος 20, 2016, 09:32:59 πμ »
Παρα πολυ καλη δουλεια Costantine!!!!  ;)
Γνωση και πληροφοριες που καλα ειναι να τις ξαναθυμομαστε οι πιο παλιοι χρηστες Linux,
και να τις μαθαινουν οι νεοι χρηστες!!!
Ευχαριστουμε για τον κοπο σου.
 

Αποσυνδεδεμένος Constantine

  • Mint Guru
  • *****
  • Μηνύματα: 653
  • Thanked: 14 times
  • Karma: 8
  • Net is vast and infinite
    • Προφίλ
Απ: Εισαγωγή στο σύστημα αρχείων του Linux
« Απάντηση #3 στις: Μάιος 20, 2016, 03:40:22 μμ »
ty φιλε μου:)
Οταν στρωσουν τα πραγματα θα προσπαθησω να κανω και αλλα...και εγω οσο το εγραφα τα μαθαινα παραλληλα ;)
Λίστα ΟδηγώνΧρήσεων - Οδηγός Χρήσης του linuxmint.gr - Οδηγός Χρήσης ΒΒcode
Desktop
System:Linux Mint 17.3 Cinnamon, Kernel: 3.19.0-32-generic  64bit
CPU i5 6600 || VGA: AMD R9 380|| Ram:8GB||motherboard:Gigabyte Z170-HD3P
The following users thanked this post: fullhidef1080

 

Τελευταία θέματα