H εντολή mount και το αρχείο /etc/fstab

Από Κοινότητα Ελεύθερου Λογισμικού ΕΜΠ
Μετάβαση σε: πλοήγηση, αναζήτηση

Οργάνωση του συστήματος αρχείων (file system)

Τα αρχεία σε ένα σύστημα GNU/Linux (και γενικά σε συστήματα Unix), είναι οργανωμένα σε μια ιεραρχική δομή καταλόγου (hierarchical directory structure), όμοια με τα Windows, που όμως ακολουθεί το Filesystem Hierarchy Standard (FHS). Αποτελούν δηλ. μια δενδροειδή δομή από καταλόγους (folders ή φάκελοι σε ορολογία Windows) που μπορεί να περιέχουν αρχεία ή άλλους καταλόγους. Ο πρώτος κατάλογος στο σύστημα αρχείων ονομάζεται root directory και παριστάνεται ως /. Σε αντίθεση με τα Windows, οι διάφορες αποθηκευτικές συσκευές δεν παριστάνονται με drive letters (C:\, D:\, κλπ), αλλά αποτελούν ειδικά αρχεία (block special devices) τα οποία με τη σειρά τους μπορούν να προσαρτηθούν σε καποιον κατάλογο, ώστε να γίνουν ορατά τα περιέχομενα τους. Αυτό γίνεται με την εντολή mount και αυτοματοποιείται από το αρχείο fstab .


Οι εντολές mount και umount

Mε την εντολή

mount -t <type> <dev> <dir>

μπορούμε να προσαρτήσουμε σε ένα κατάλογο του συστήματος αρχείων, έστω <dir>, ένα άλλο σύστημα αρχείων, που περιέχεται στο αρχείο <dev>.

Η συσκευή <dev> συνήθως είναι ένα αρχείο (block special device) που βρίσκεται στο directory /dev, όπου παραδοσιακά τοποθετούνται τα ειδικά αρχεία που αντιστοιχούν στις συσκευές του συστήματός μας. Για παράδειγμα:

/dev/cdrom για τη συσκευή CD-ROM,
/dev/hda1 για το πρώτο partition στον πρώτο IDE σκληρό δίσκο,
/dev/sda2  για το δεύτερο partition στον δεύτερο SCSI, SATA ή USBσκληρό δίσκο.

Σημείωση: Οι δίσκοι USB και SATA εξομοιώνονται σαν δίσκοι SCSI.

Με την εντολή

umount <dir>

αφαιρούμε από τον κατάλογο <dir> το σύστημα αρχείων που είχε προσαρτηθεί εκεί.


Το αρχείο /etc/mtab περιέχει μια λίστα με τα mounted filesystems. Η εντολή mount χωρίς παραμέτρους τυπώνει τη λίστα αυτή.

Φυσικά όλα αυτά δεν σημαίνουν ότι κάθε φορά που βάζουμε ένα CD στο drive, ή συνδέουμε έναν εξωτερικό δίσκο, πρέπει να το κάνουμε mount. Με τη βοήθεια του ΗΑL (harware abstraction layer) και μερικών ακόμα προγραμμάτων παρέχεται η δυνατότητα του automount. Στα δύο δημοφιλέστερα desktop environments (KDE και GNOME) συνήθως δεν χρειάζεται να κάνουμε τίποτα. Απλά βάζουμε το CD και είμαστε οk ;-)

Το αρχείο /etc/fstab

Πληροφορίες για τις αποθηκευτικές συσκευές, τα συστήματα αρχείων τους και τους καταλόγους στους οποίους προσαρτώνται, αποθηκεύονται στο configuration file /etc/fstab. Αν κάποια συσκευή βρίσκεται ήδη εκεί, αλλά δεν έχει προσαρτηθεί, αρκεί να δώσουμε μόνο το mount point (σημείο προσάρτησης) στην εντολή mount, ή μόνο την συσκευή.

Κάθε γραμμή στο fstab αντιστοιχεί σε ένα διαφορετικό σύστημα αρχείων.

Σε κάθε γραμμή, η πρώτη στήλη αντιστοιχεί συνήθως στην συσκευή στην οποία βρίσκεται το σύστημα αρχείων (πχ. /dev/floppy).

Η δεύτερη στήλη αντιστοιχεί στο directory στο οποίο θα προσαρτηθεί το σύστημα αρχείων. Για swap partitions πρέπει να είναι none. Κατά σύμβαση τα περισσότερα συστήματα αρχείων, που δεν αποτελούν μέρος του βασικού συστήματος (όπως αυτό περιγράφεται από το FHS), προσαρτώνται στο direcrory /mnt, που σε κάποιες διανομές έχει αντικατασταθεί από το directory /media, που περιέχει mount points για "removable media", πχ. cdrom, floppy κλπ).

Η τρίτη στήλη έχει να κάνει με τον τύπο του συστήματος αρχείων (ext2/3, xfs, reiserfs κ.α.). Αν συμπληρωθεί με auto, ο τύπος του συστήματος αρχείων εντοπίζεται αυτόματα.

Η τέταρτη στήλη περιέχει mount options για το σύστημα αρχείων. Tα πιο σημαντικά mount options είναι:

  1. auto και noauto: Με την επιλογή auto το σύστημα αρχείων προσαρτάται αυτόματα κατά την εκκίνηση του συστήματος ή σε περίπτωση που εκτελέσουμε mount -a. Το auto είναι η default επιλογή, οπότε αν δεν θέλουμε ένα σύστημα αρχείων να προσαρτάται αυτόματα πρέπει να συμπληρώσουμε noauto.
  2. user και nouser: H default επιλογή είναι nouser και μόνο ο root μπροεί να κάνει mount (ή umount) ένα σύστημα αρχείων. Σε περίπτωση που θέλουμε να δώσουμε τη δυνατότητα αυτή και σε χρήστες εκτός του root χρησιμοποιούμε την επιλογή user.
  3. exec και noexec: Με την επιλογή exec (default) μπορούμε να τρέχουμε binaries (εκτελέσιμα αρχεία) απ το συγκεκριμένο σύστημα αρχείων. Σε περίπτωση που δεν θέλουμε να επιτρέπεται αυτό χρησιμοποιούμε την επιλογή noexec.
  4. ro και rw: Με την επιλογή ro έχουμε read-only access στο σύστημα αρχείων ενώ με την rw έχουμε read/write access.
  5. sync και async: Οι δύο αυτές επιλογές επηρεάζουν την είσοδο και έξοδο δεδομένων στη συσκευή που περιέχει το σύστημα αρχείων. Με την επιλογή sync οποιεσδήποτε αλλαγές στο σύστημα αρχείων γράφονται αμέσως στην συσκευή, ενώ με async είναι πιθανό να κρατηθούν στην μνήμη και να γραφτούν αργότερα (για καλύτερη απόδοση, αφού τα μέσα αποθήκευσης είναι συνήθως αργές συσκευές). Η προεπιλογή είναι async.
  6. defaults: Με την επιλογή αυτή χρησιμοποιούνται οι default επιλογές rw, suid, dev, exec, auto, nouser, και async.

Για κάθε τύπο συστήματος αρχείων υπάρχουν και ξεχωριστές επιλογές.

H πέμπτη στήλη συμπληρώνεται είτε με 0 ειτε με 1, και ο αριθμός χρησιμοποιείται από την εντολή dump. Αν είναι 1 θα γίνει backup του συστήματος αρχείων. Αν είναι 0 ή δεν έχει συμπληρωθεί κάποιος αριθμός (ούτε στην 5η ούτε στην 6η στήλη) τότε η dump αγνοεί το σύστημα αρχείων.

Η έκτη στήλη συμπληρώνεται με 0, 1 ή 2 και χρησιμοποιείται απ την εντολή fsck. Αν είναι 1 τότε το σύστημα αρχείων θα ελεγχθεί κατά την εκκίνηση του υπολογιστή. Αν είναι 2 θα ελεγχθεί κατά την εκκίνηση, αλλά μετά τα συστήματα αρχείων που έχουν 1 στην αντίστοιχη στήλη. Αν είναι 0 ή δεν έχει συμπληρωθεί, το σύστημα αρχείων δεν θα ελεγχθεί.

Για να δείτε αναλυτικά τις επιλογές για την εντολή mount, και τα διάφορα filesystems, αλλά και για το αρχείο fstab:

$man 8 mount
$man 5 fstab


Windows Filesystems

Τα πιο διαδεδομένα συστήματα αρχείων των Windows, FAT32 (τύπος filesystem vfat) και NTFS (τύπος ntfs ή ntfs-3g) είναι προσπελάσιμα από GNU/Linux, αλλά επειδή δεν είναι συμβατά με ένα σύστημα αρχείων Unix, χρειάζονται ειδικά options κατά την προσάρτηση. Τα χρησιμότερα είναι τα εξής:

  1. iocharset (vfat)/nls (ntfs): Χρήσιμο σε περίπτωση που υπάρχουν ελληνικά ονόματα αρχείων στο filesystem, οπότε βάζουμε utf8 ή iso8859-7, αναλόγως το locale του συστήματος μας.
  2. uid, gid: Επειδή τα δύο αυτά συστήματα αρχείων δεν υποστηρίζουν Unix owner και group bits, πρέπει να δωθούν κάποια κατά την προσάρτηση, αλλιώς δίνονται αυτά του χρήστη που κάνει mount (συνήθως του root). Οι τιμές μπορεί να είναι όνομα χρήστη/group ή το αντίστοιχο id σε αριθμητική τιμή.
  3. umask, dmask, fmask: Επειδή δεν υποστηρίζονται Unix permissions, πρέπει να δωθούν κάποια κατά την προσάρτηση, αλλιώς τα αρχεία μπορούν να διαβαστούν/γραφτούν μόνο από τον owner. Με το umask δίνονται τα permssions για όλα τα αρχεία, με το dmask μόνο για τους καταλόγους (φακέλους) και με το fmask μόνο για τα απλά αρχεία. Οι τιμές είναι σε οκταδικό συμπλήρωμα του 1. Έτσι για παράδειγμα με dmask=0022,fmask=0133 οι κατάλογοι θα έχουν permissions drwxr-xr-x και τα αρχεία -rw-r--r--.

Παράδειγμα

Ένα τυπικό αρχείο fstab:

    # /etc/fstab: static file system information.
    #
    # <file system> <mount point>   <type>       <options>                                  <dump>  <pass>
    proc            /proc           proc         defaults                                    0       0
    /dev/sda2       /               ext3         defaults,errors=remount-ro                  0       1
    /dev/sda5       none            swap         sw                                          0       0
    /dev/hdd        /media/cdrom0   udf,iso9660  user,noauto                                   0       0
    /dev/hdc        /media/cdrom1   udf,iso9660  user,noauto                                   0       0
    /dev/fd0        /media/floppy0  auto         rw,user,noauto                                0       0 
    /dev/sdb        /media/usb0     auto         rw,user,noauto                                0       0
    /dev/sda1       /media/windows  ntfs         uid=1000,gid=1000,nls=utf8,umask=0222                         0       0
    /dev/sda3       /media/winfat   vfat         codepage=737,iocharset=utf8,uid=1000,gid=1000,dmask=0022,fmask=0133        0       0

Σημείωση: Σε debian based συστήματα το uid 1000 είναι ο πρώτος κανονικός χρήστης που προστίθεται στο σύστημα.