Mount, umount und /etc/fstab: Unterschied zwischen den Versionen
Die Seite wurde neu angelegt: „=mount= <code>mount</code> fügt die Dateisysteme der verschiedenen Massenspeicher zu einem einzigen Verzeichnisbaum zusammen. Die Partitionen und Laufwerke s…“ |
|||
| (3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
Animation zum Durchklicken: [https://labs.xinux.net/mount-fstab.html mount, umount und fstab] | |||
=mount= | =mount= | ||
<code>mount</code> fügt die Dateisysteme der verschiedenen Massenspeicher zu einem einzigen Verzeichnisbaum zusammen. Die Partitionen und Laufwerke sind als Gerätedateien unter <code>/dev</code> abgebildet; <code>mount</code> setzt das Dateisystem einer Partition auf ein | <code>mount</code> fügt die Dateisysteme der verschiedenen Massenspeicher zu einem einzigen Verzeichnisbaum zusammen. Die Partitionen und Laufwerke sind als Gerätedateien unter <code>/dev</code> abgebildet; <code>mount</code> setzt das Dateisystem einer Partition auf ein Verzeichnis, den '''Mountpunkt'''. Der Mountpunkt sollte leer sein: Was vorher darin lag, ist nicht gelöscht, aber verdeckt, solange etwas darüber gemountet ist – und taucht nach dem Aushängen wieder auf. | ||
Die Liste der eingehängten Dateisysteme führt der Kernel unter <code>/proc/mounts</code>. <code>/etc/mtab</code> ist auf aktuellen Systemen nur noch ein Symlink darauf. Wird ein <code>mount</code>-Aufruf unvollständig angegeben, ergänzt das Kommando die fehlenden Angaben aus <code>/etc/fstab</code>. | Die Liste der eingehängten Dateisysteme führt der Kernel unter <code>/proc/mounts</code>. <code>/etc/mtab</code> ist auf aktuellen Systemen nur noch ein Symlink darauf. Wird ein <code>mount</code>-Aufruf unvollständig angegeben, ergänzt das Kommando die fehlenden Angaben aus <code>/etc/fstab</code>. | ||
| Zeile 13: | Zeile 15: | ||
! Option !! Wirkung | ! Option !! Wirkung | ||
|- | |- | ||
| <code>-a</code> || alle | | <code>-a</code> || alle Dateisysteme aus <code>/etc/fstab</code> einhängen, die nicht <code>noauto</code> tragen und noch nicht eingehängt sind | ||
|- | |- | ||
| <code>-t TYP</code> || Dateisystemtyp angeben (ext4, xfs, iso9660 …); meist automatisch erkannt | | <code>-t TYP</code> || Dateisystemtyp angeben (ext4, xfs, iso9660 …); meist automatisch erkannt | ||
| Zeile 44: | Zeile 46: | ||
*findmnt /mnt | *findmnt /mnt | ||
=Allgemeine Mount-Optionen= | ==Allgemeine Mount-Optionen== | ||
Hinter <code>-o</code> stehen die Optionen für die Partition. Diese gelten für alle Dateisystemtypen: | Hinter <code>-o</code> stehen die Optionen für die Partition. Diese gelten für alle Dateisystemtypen: | ||
| Zeile 63: | Zeile 65: | ||
| <code>dev</code> / <code>nodev</code> || Gerätedateien interpretieren oder nicht | | <code>dev</code> / <code>nodev</code> || Gerätedateien interpretieren oder nicht | ||
|- | |- | ||
| <code>user</code> / <code>nouser</code> || auch normalen Nutzern das Einhängen erlauben oder nur root | | <code>user</code> / <code>nouser</code> || auch normalen Nutzern das Einhängen erlauben oder nur root. '''Achtung:''' <code>user</code> setzt automatisch <code>noexec,nosuid,nodev</code>; wer Programme ausführen will, muss <code>exec</code> dahinter schreiben | ||
|- | |- | ||
| <code> | | <code>relatime</code> / <code>noatime</code> / <code>strictatime</code> || Umgang mit der Zugriffszeit. Standard ist <code>relatime</code>: atime nur aktualisieren, wenn sie älter als mtime/ctime oder einen Tag alt ist. <code>noatime</code> schreibt sie nie, <code>strictatime</code> bei jedem Lesen | ||
|- | |- | ||
| <code>remount</code> || bereits eingehängtes Dateisystem mit neuen Optionen neu einhängen | | <code>remount</code> || bereits eingehängtes Dateisystem mit neuen Optionen neu einhängen | ||
| Zeile 73: | Zeile 75: | ||
| <code>bind</code> || ein Verzeichnis zusätzlich an einer zweiten Stelle einblenden | | <code>bind</code> || ein Verzeichnis zusätzlich an einer zweiten Stelle einblenden | ||
|- | |- | ||
| <code>acl</code> || POSIX-ACLs aktivieren | | <code>acl</code> || POSIX-ACLs aktivieren; bei ext4 und XFS ohnehin Standard | ||
|} | |} | ||
==Optionen im laufenden Betrieb ändern== | ===Optionen im laufenden Betrieb ändern=== | ||
Mit <code>remount</code> lässt sich eine Option setzen, ohne vorher auszuhängen. Beispiel: eine Partition nachträglich auf <code>noexec</code> stellen. | Mit <code>remount</code> lässt sich eine Option setzen, ohne vorher auszuhängen. Beispiel: eine Partition nachträglich auf <code>noexec</code> stellen. | ||
*mount -o remount,noexec /mnt | *mount -o remount,noexec /mnt | ||
==Ein Verzeichnis an zweiter Stelle einblenden== | ===Ein Verzeichnis an zweiter Stelle einblenden=== | ||
<code>bind</code> zeigt denselben Verzeichnisinhalt an zwei Pfaden – nützlich, um einem Dienst nur einen Teilbaum sichtbar zu machen. | <code>bind</code> zeigt denselben Verzeichnisinhalt an zwei Pfaden – nützlich, um einem Dienst nur einen Teilbaum sichtbar zu machen. | ||
*mount --bind /daten/web /var/www/html | *mount --bind /daten/web /var/www/html | ||
Soll die zweite Ansicht nur lesbar sein, braucht es einen zweiten Schritt: | |||
*mount -o remount,bind,ro /var/www/html | |||
=umount= | =umount= | ||
<code>umount</code> hängt ein Dateisystem wieder aus. Dabei | <code>umount</code> hängt ein Dateisystem wieder aus. Dabei werden alle noch im Cache gehaltenen Daten dieses Dateisystems auf den Datenträger geschrieben – deshalb einen USB-Stick immer erst aushängen, bevor man ihn abzieht. | ||
Ausgehängt werden kann nur ein '''inaktives''' Dateisystem: kein Prozess darf eine Datei darin geöffnet haben oder ein Verzeichnis darin als Arbeitsverzeichnis benutzen, und es darf kein weiteres Dateisystem darüber eingehängt sein. Sonst kommt <code>device is busy</code>. | Ausgehängt werden kann nur ein '''inaktives''' Dateisystem: kein Prozess darf eine Datei darin geöffnet haben oder ein Verzeichnis darin als Arbeitsverzeichnis benutzen, und es darf kein weiteres Dateisystem darüber eingehängt sein. Sonst kommt <code>device is busy</code>. | ||
| Zeile 95: | Zeile 100: | ||
! Option !! Wirkung | ! Option !! Wirkung | ||
|- | |- | ||
| <code>-a</code> || alle | | <code>-a</code> || '''alle eingehängten''' Dateisysteme aushängen (außer <code>/proc</code> und Verwandten) – nicht nur die aus <code>/etc/fstab</code>. Auf einem laufenden System kaum sinnvoll | ||
|- | |- | ||
| <code>-t TYP</code> || nur Dateisysteme des angegebenen Typs aushängen | | <code>-t TYP</code> || nur Dateisysteme des angegebenen Typs aushängen | ||
| Zeile 111: | Zeile 116: | ||
*umount /mnt | *umount /mnt | ||
=Wenn das Aushängen hängt: „device is busy"= | ==Wenn das Aushängen hängt: „device is busy"== | ||
Belegt ein Prozess das Dateisystem, verweigert <code>umount</code> den Dienst: | Belegt ein Prozess das Dateisystem, verweigert <code>umount</code> den Dienst: | ||
| Zeile 117: | Zeile 122: | ||
umount: /mnt: target is busy. | umount: /mnt: target is busy. | ||
==Den Blockierer finden== | ===Den Blockierer finden=== | ||
<code>lsof</code> zeigt offene Dateien unterhalb des Mountpunkts, <code>fuser</code> die Prozesse mitsamt PID. | <code>lsof</code> zeigt offene Dateien unterhalb des Mountpunkts, <code>fuser</code> die Prozesse mitsamt PID. | ||
*lsof /mnt | *lsof /mnt | ||
| Zeile 125: | Zeile 130: | ||
Danach den Prozess sauber beenden oder aus dem Verzeichnis herausgehen – oft ist es nur eine Shell, die noch im Mountpunkt steht. | Danach den Prozess sauber beenden oder aus dem Verzeichnis herausgehen – oft ist es nur eine Shell, die noch im Mountpunkt steht. | ||
==Notausgang: lazy unmount== | ===Notausgang: lazy unmount=== | ||
Lässt sich der Blockierer nicht beseitigen, nimmt <code>-l</code> den Mount sofort aus dem Baum. Der Datenträger wird freigegeben, sobald der letzte Zugriff endet. | Lässt sich der Blockierer nicht beseitigen, nimmt <code>-l</code> den Mount sofort aus dem Baum. Der Datenträger wird freigegeben, sobald der letzte Zugriff endet. Bis dahin ist er weiter in Benutzung – einen USB-Stick nach <code>umount -l</code> also nicht sofort abziehen. | ||
*umount -l /mnt | *umount -l /mnt | ||
| Zeile 132: | Zeile 137: | ||
*fuser -km /mnt | *fuser -km /mnt | ||
=Aufgaben= | ==Aufgaben zu mount und umount== | ||
Vorbereitung: drei Datenpartitionen auf <code>/dev/sdb</code> (<code>/dev/sdb1</code> bis <code>/dev/sdb3</code>), jeweils mit einem Dateisystem. '''<code>/dev/sda</code> bleibt unberührt.''' Die Mountpunkte vorher anlegen. | Vorbereitung: drei Datenpartitionen auf <code>/dev/sdb</code> (<code>/dev/sdb1</code> bis <code>/dev/sdb3</code>), jeweils mit einem Dateisystem. '''<code>/dev/sda</code> bleibt unberührt.''' Die Mountpunkte vorher anlegen. | ||
| Zeile 164: | Zeile 169: | ||
* Blenden Sie das Verzeichnis /mnt/1part/docs zusätzlich unter /mnt/gemeinsam ein (bind mount) und prüfen Sie das Ergebnis mit findmnt. | * Blenden Sie das Verzeichnis /mnt/1part/docs zusätzlich unter /mnt/gemeinsam ein (bind mount) und prüfen Sie das Ergebnis mit findmnt. | ||
<!-- Lösung: | <!-- Lösung: | ||
mkdir /mnt/gemeinsam | mkdir -p /mnt/1part/docs /mnt/gemeinsam | ||
mount --bind /mnt/1part/docs /mnt/gemeinsam | mount --bind /mnt/1part/docs /mnt/gemeinsam | ||
findmnt /mnt/gemeinsam | findmnt /mnt/gemeinsam | ||
--> | --> | ||
=/etc/fstab= | =/etc/fstab= | ||
=Zweck= | ==Zweck== | ||
Die Datei <code>/etc/fstab</code> (''file system table'') legt fest, welche Dateisysteme beim Booten automatisch eingehängt werden, an welchem Mountpunkt und mit welchen Optionen. Sie ist außerdem die Vorlage für unvollständige <code>mount</code>-Aufrufe: steht ein Gerät oder Mountpunkt in der fstab, genügt <code>mount /mnt/docs</code> und der Rest wird ergänzt. | Die Datei <code>/etc/fstab</code> (''file system table'') legt fest, welche Dateisysteme beim Booten automatisch eingehängt werden, an welchem Mountpunkt und mit welchen Optionen. Sie ist außerdem die Vorlage für unvollständige <code>mount</code>-Aufrufe: steht ein Gerät oder Mountpunkt in der fstab, genügt <code>mount /mnt/docs</code> und der Rest wird ergänzt. | ||
=Aufbau= | ==Aufbau== | ||
Jede Zeile beschreibt ein Dateisystem mit '''sechs durch Leerzeichen getrennten Feldern'''. Kommentare beginnen mit <code>#</code>. | Jede Zeile beschreibt ein Dateisystem mit '''sechs durch Leerzeichen getrennten Feldern'''. Kommentare beginnen mit <code>#</code>. | ||
| Zeile 193: | Zeile 198: | ||
| 3 || Typ || Dateisystemtyp: <code>ext4</code>, <code>xfs</code>, <code>btrfs</code>, <code>swap</code>, <code>nfs</code>. <code>auto</code> lässt den Kernel raten. | | 3 || Typ || Dateisystemtyp: <code>ext4</code>, <code>xfs</code>, <code>btrfs</code>, <code>swap</code>, <code>nfs</code>. <code>auto</code> lässt den Kernel raten. | ||
|- | |- | ||
| 4 || Optionen || Kommagetrennte Mount-Optionen, dieselben wie bei <code>mount -o</code> (siehe [[ | | 4 || Optionen || Kommagetrennte Mount-Optionen, dieselben wie bei <code>mount -o</code> (siehe [[#Allgemeine Mount-Optionen|Allgemeine Mount-Optionen]]). | ||
|- | |- | ||
| 5 || Dump || Markierung für das alte Backup-Programm <code>dump</code>. Heute praktisch bedeutungslos – steht fast immer auf <code>0</code>. | | 5 || Dump || Markierung für das alte Backup-Programm <code>dump</code>. Heute praktisch bedeutungslos – steht fast immer auf <code>0</code>. | ||
| Zeile 200: | Zeile 205: | ||
|} | |} | ||
==Das Check-Feld richtig setzen== | ===Das Check-Feld richtig setzen=== | ||
*<code>1</code> – nur für das Root-Dateisystem. Es wird zuerst und allein geprüft. | *<code>1</code> – nur für das Root-Dateisystem. Es wird zuerst und allein geprüft. | ||
*<code>2</code> – für alle anderen ext-Dateisysteme. Sie werden nach Root und untereinander parallel geprüft. | *<code>2</code> – für alle anderen ext-Dateisysteme. Sie werden nach Root und untereinander parallel geprüft. | ||
*<code>0</code> – keine Prüfung beim Booten. '''Für btrfs und xfs immer 0''', denn | *<code>0</code> – keine Prüfung beim Booten. '''Für btrfs und xfs immer 0''', denn deren <code>fsck</code> tut beim Start nichts; auch Swap und Netzlaufwerke stehen auf 0. | ||
=Die UUID herausfinden= | ==Die UUID herausfinden== | ||
Der Gerätename in Feld 1 sollte eine UUID sein. Beide Werkzeuge zeigen sie: | Der Gerätename in Feld 1 sollte eine UUID sein. Beide Werkzeuge zeigen sie: | ||
| Zeile 213: | Zeile 218: | ||
*lsblk -f | *lsblk -f | ||
=Nach dem Ändern: testen, nicht raten= | ==Nach dem Ändern: testen, nicht raten== | ||
Ein fehlerhafter fstab-Eintrag kann das '''Booten verhindern''' – das System bleibt dann im Notfall-Prompt (''emergency mode'') hängen. Deshalb '''vor dem Neustart''' prüfen. | |||
Zuerst die Syntax, ohne etwas einzuhängen. <code>findmnt --verify</code> findet Tippfehler, unbekannte Typen und UUIDs, die es nicht gibt: | |||
*findmnt --verify | |||
Dann tatsächlich einhängen: | |||
*mount -a | *mount -a | ||
Kommt keine Fehlermeldung, sind die Einträge in Ordnung. Erst dann neu starten. | Kommt keine Fehlermeldung, sind die Einträge in Ordnung. Erst dann neu starten. <code>mount -a</code> prüft allerdings nur Einträge ohne <code>noauto</code>, die noch nicht eingehängt sind. | ||
Auf systemd-Systemen (Debian | Auf systemd-Systemen (Debian, Rocky) erzeugt systemd aus der fstab eigene Mount-Units. Nach einer Änderung weist <code>mount</code> selbst darauf hin, dass systemd noch die alte Fassung kennt: | ||
mount: (hint) your fstab has been modified, but systemd still uses | |||
the old version; use 'systemctl daemon-reload' to reload. | |||
*systemctl daemon-reload | *systemctl daemon-reload | ||
=Einen Eintrag entschärfen= | ==Fehlende Platten: nofail== | ||
Fehlt beim Booten eine Platte, die in der fstab steht – etwa eine USB-Platte oder ein Netzlaufwerk –, wartet systemd und landet im Notfall-Prompt. Mit <code>nofail</code> wird der Eintrag übersprungen, wenn das Gerät fehlt; <code>x-systemd.device-timeout=10s</code> verkürzt das Warten: | |||
UUID=... /mnt/backup ext4 defaults,nofail,x-systemd.device-timeout=10s 0 2 | |||
Netzlaufwerke bekommen zusätzlich <code>_netdev</code>, damit sie erst nach dem Netzwerk eingehängt werden. | |||
==Einen Eintrag entschärfen== | |||
Soll ein Dateisystem vorerst '''nicht''' automatisch gemountet werden, aber der Eintrag bleiben, hilft die Option <code>noauto</code> in Feld 4. Dann wird es beim Booten übersprungen und lässt sich später von Hand über den Mountpunkt einhängen. | Soll ein Dateisystem vorerst '''nicht''' automatisch gemountet werden, aber der Eintrag bleiben, hilft die Option <code>noauto</code> in Feld 4. Dann wird es beim Booten übersprungen und lässt sich später von Hand über den Mountpunkt einhängen. | ||
/dev/sdb3 /mnt/video ext4 noauto 0 0 | /dev/sdb3 /mnt/video ext4 noauto 0 0 | ||
=Aufgaben= | ==Aufgaben zu /etc/fstab== | ||
Vorbereitung: eine leere Datenplatte <code>/dev/sdc</code>. '''<code>/dev/sda</code> bleibt unberührt.''' | Vorbereitung: eine leere Datenplatte <code>/dev/sdc</code>. '''<code>/dev/sda</code> bleibt unberührt.''' | ||
* Erstellen Sie auf /dev/sdc vier Partitionen (mit fdisk oder gdisk). | * Erstellen Sie auf /dev/sdc vier Partitionen (mit fdisk oder gdisk). | ||
<!-- Lösung: fdisk /dev/sdc -> | <!-- Lösung: fdisk /dev/sdc -> dreimal n (primär), beim vierten n eine primäre Partition über den Rest (MBR erlaubt genau vier primäre), dann w. Mit gdisk einfach viermal n. --> | ||
* Formatieren Sie die vier Partitionen mit ext4 in Standardeinstellungen. | * Formatieren Sie die vier Partitionen mit ext4 in Standardeinstellungen. | ||
| Zeile 263: | Zeile 282: | ||
* Tragen Sie die 4. Partition (docs) so ein: automatisches Mounten, normale Nutzer dürfen mounten. | * Tragen Sie die 4. Partition (docs) so ein: automatisches Mounten, normale Nutzer dürfen mounten. | ||
<!-- Lösung: /etc/fstab: | <!-- Lösung: /etc/fstab: | ||
UUID=... /mnt/docs ext4 auto,user 0 2 --> | UUID=... /mnt/docs ext4 auto,user 0 2 | ||
Hinweis: user setzt automatisch noexec,nosuid,nodev. --> | |||
* Testen Sie alle Einträge, ohne neu zu starten. | * Testen Sie alle Einträge, ohne neu zu starten. | ||
<!-- Lösung: mount -a (Fehler? Eintrag korrigieren, bevor rebootet wird) --> | <!-- Lösung: findmnt --verify ; systemctl daemon-reload ; mount -a (Fehler? Eintrag korrigieren, bevor rebootet wird) --> | ||
* Prüfen Sie mit findmnt, ob media wirklich noexec und misc wirklich ro gemountet ist. | * Prüfen Sie mit findmnt, ob media wirklich noexec und misc wirklich ro gemountet ist. | ||
<!-- Lösung: findmnt /mnt/media ; findmnt /mnt/misc --> | <!-- Lösung: findmnt /mnt/media ; findmnt /mnt/misc --> | ||
=Fleißaufgabe: Datei als Dateisystem (Loop)= | ==Fleißaufgabe: Datei als Dateisystem (Loop)== | ||
Statt einer echten Partition lässt sich auch eine Datei als Dateisystem einhängen – über ein Loop-Gerät. | Statt einer echten Partition lässt sich auch eine Datei als Dateisystem einhängen – über ein Loop-Gerät. | ||
| Zeile 279: | Zeile 299: | ||
* Formatieren Sie die Datei mit ext4. | * Formatieren Sie die Datei mit ext4. | ||
<!-- Lösung: mkfs.ext4 /srv/share.img ( | <!-- Lösung: mkfs.ext4 /srv/share.img (ältere Versionen fragen nach, weil es kein Blockgerät ist: mit y bestätigen) --> | ||
* Legen Sie den Mountpunkt /mnt/share an und tragen Sie die Datei mit der Option loop in die /etc/fstab ein. | * Legen Sie den Mountpunkt /mnt/share an und tragen Sie die Datei mit der Option loop in die /etc/fstab ein. | ||
| Zeile 289: | Zeile 309: | ||
* Testen Sie den Eintrag. | * Testen Sie den Eintrag. | ||
<!-- Lösung: mount -a ; findmnt /mnt/share --> | <!-- Lösung: mount -a ; findmnt /mnt/share ; losetup -a (zeigt das verwendete Loop-Gerät) --> | ||
==Entferntes System mounten== | |||
*Installiere auf dem Debian System '''nfs-common''' | |||
*Schauen dir mit '''showmount -e nfs-server.sec-labs.de''' welches Verzeichnis er freigibt | |||
*Erstelle auf dem Debian System ein Verzeichnis '''mkdir -p /mnt/data''' | |||
*Ergänze die /etc/fstab | |||
**//nfs-server.sec-labs.de:<Freigabe von Punkt2> /mnt/data nfs defaults 0 0 | |||
*mounte mit '''mount -a''' und '''systemctl daemon-reload''' | |||
*Wie gross ist diese Freigabe | |||
Aktuelle Version vom 20. Oktober 2026, 10:16 Uhr
Animation zum Durchklicken: mount, umount und fstab
mount
mount fügt die Dateisysteme der verschiedenen Massenspeicher zu einem einzigen Verzeichnisbaum zusammen. Die Partitionen und Laufwerke sind als Gerätedateien unter /dev abgebildet; mount setzt das Dateisystem einer Partition auf ein Verzeichnis, den Mountpunkt. Der Mountpunkt sollte leer sein: Was vorher darin lag, ist nicht gelöscht, aber verdeckt, solange etwas darüber gemountet ist – und taucht nach dem Aushängen wieder auf.
Die Liste der eingehängten Dateisysteme führt der Kernel unter /proc/mounts. /etc/mtab ist auf aktuellen Systemen nur noch ein Symlink darauf. Wird ein mount-Aufruf unvollständig angegeben, ergänzt das Kommando die fehlenden Angaben aus /etc/fstab.
Schema
mount [Optionen] Gerät Mountpunkt
Wichtige Optionen
| Option | Wirkung |
|---|---|
-a |
alle Dateisysteme aus /etc/fstab einhängen, die nicht noauto tragen und noch nicht eingehängt sind
|
-t TYP |
Dateisystemtyp angeben (ext4, xfs, iso9660 …); meist automatisch erkannt |
-o LISTE |
durch Kommata getrennte Liste von Mount-Optionen |
-r |
nur lesend einhängen (wie -o ro)
|
-v |
ausführliche Ausgabe |
Eine Partition einhängen
- mount /dev/sdb1 /mnt
Mit ausdrücklichem Typ:
- mount -t ext4 /dev/sdb1 /mnt
Eine CD/DVD nur lesend:
- mount -t iso9660 -o ro /dev/sr0 /media/cdrom
Eingehängte Dateisysteme anzeigen
Ohne Argumente listet mount die aktuelle Liste auf.
- mount
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro) /dev/sdb1 on /mnt type ext4 (rw,relatime) /dev/sr0 on /media/cdrom type iso9660 (ro,nosuid,nodev)
Übersichtlicher – als Baum, wahlweise gefiltert nach Ziel:
- findmnt /mnt
Allgemeine Mount-Optionen
Hinter -o stehen die Optionen für die Partition. Diese gelten für alle Dateisystemtypen:
| Option | Erklärung |
|---|---|
defaults |
Kurzform für rw,suid,dev,exec,auto,nouser,async
|
rw / ro |
les-/schreibbar bzw. nur lesbar |
auto / noauto |
bei mount -a (und beim Booten) mit einhängen oder nicht
|
exec / noexec |
Ausführen von Programmen erlauben oder verbieten |
suid / nosuid |
SUID-/SGID-Bits beachten oder ignorieren |
dev / nodev |
Gerätedateien interpretieren oder nicht |
user / nouser |
auch normalen Nutzern das Einhängen erlauben oder nur root. Achtung: user setzt automatisch noexec,nosuid,nodev; wer Programme ausführen will, muss exec dahinter schreiben
|
relatime / noatime / strictatime |
Umgang mit der Zugriffszeit. Standard ist relatime: atime nur aktualisieren, wenn sie älter als mtime/ctime oder einen Tag alt ist. noatime schreibt sie nie, strictatime bei jedem Lesen
|
remount |
bereits eingehängtes Dateisystem mit neuen Optionen neu einhängen |
loop |
eine Image-Datei über ein Loop-Gerät einhängen |
bind |
ein Verzeichnis zusätzlich an einer zweiten Stelle einblenden |
acl |
POSIX-ACLs aktivieren; bei ext4 und XFS ohnehin Standard |
Optionen im laufenden Betrieb ändern
Mit remount lässt sich eine Option setzen, ohne vorher auszuhängen. Beispiel: eine Partition nachträglich auf noexec stellen.
- mount -o remount,noexec /mnt
Ein Verzeichnis an zweiter Stelle einblenden
bind zeigt denselben Verzeichnisinhalt an zwei Pfaden – nützlich, um einem Dienst nur einen Teilbaum sichtbar zu machen.
- mount --bind /daten/web /var/www/html
Soll die zweite Ansicht nur lesbar sein, braucht es einen zweiten Schritt:
- mount -o remount,bind,ro /var/www/html
umount
umount hängt ein Dateisystem wieder aus. Dabei werden alle noch im Cache gehaltenen Daten dieses Dateisystems auf den Datenträger geschrieben – deshalb einen USB-Stick immer erst aushängen, bevor man ihn abzieht.
Ausgehängt werden kann nur ein inaktives Dateisystem: kein Prozess darf eine Datei darin geöffnet haben oder ein Verzeichnis darin als Arbeitsverzeichnis benutzen, und es darf kein weiteres Dateisystem darüber eingehängt sein. Sonst kommt device is busy.
Optionen
| Option | Wirkung |
|---|---|
-a |
alle eingehängten Dateisysteme aushängen (außer /proc und Verwandten) – nicht nur die aus /etc/fstab. Auf einem laufenden System kaum sinnvoll
|
-t TYP |
nur Dateisysteme des angegebenen Typs aushängen |
-l |
lazy: den Mount sofort aus dem Baum nehmen, den Datenträger aber erst freigeben, wenn der letzte Zugriff endet |
-v |
ausführliche Ausgabe |
Aushängen – über Gerät oder Mountpunkt
Beides ist möglich und tut dasselbe. Über das Gerät:
- umount /dev/sdb1
Oder über den Mountpunkt:
- umount /mnt
Wenn das Aushängen hängt: „device is busy"
Belegt ein Prozess das Dateisystem, verweigert umount den Dienst:
umount: /mnt: target is busy.
Den Blockierer finden
lsof zeigt offene Dateien unterhalb des Mountpunkts, fuser die Prozesse mitsamt PID.
- lsof /mnt
- fuser -vm /mnt
Danach den Prozess sauber beenden oder aus dem Verzeichnis herausgehen – oft ist es nur eine Shell, die noch im Mountpunkt steht.
Notausgang: lazy unmount
Lässt sich der Blockierer nicht beseitigen, nimmt -l den Mount sofort aus dem Baum. Der Datenträger wird freigegeben, sobald der letzte Zugriff endet. Bis dahin ist er weiter in Benutzung – einen USB-Stick nach umount -l also nicht sofort abziehen.
- umount -l /mnt
Als grobes Mittel kann fuser die Blockierer auch direkt abschießen (mit Bedacht einsetzen):
- fuser -km /mnt
Aufgaben zu mount und umount
Vorbereitung: drei Datenpartitionen auf /dev/sdb (/dev/sdb1 bis /dev/sdb3), jeweils mit einem Dateisystem. /dev/sda bleibt unberührt. Die Mountpunkte vorher anlegen.
- Legen Sie die Mountpunkte /mnt/1part, /mnt/2part und /mnt/3part an.
- Mounten Sie die erste Partition unter /mnt/1part.
- Mounten Sie die zweite Partition unter /mnt/2part mit der Option noatime.
- Hängen Sie die erste Partition mit remount zusätzlich auf noexec um, ohne sie auszuhängen.
- Prüfen Sie mit findmnt, ob die Optionen gesetzt sind.
- Mounten Sie die dritte Partition unter /mnt/3part nur lesend.
- Wechseln Sie mit cd nach /mnt/2part und versuchen Sie, die Partition auszuhängen. Was passiert, und wie finden Sie den Blockierer?
- Hängen Sie die zweite Partition aus – über den Mountpunkt.
- Blenden Sie das Verzeichnis /mnt/1part/docs zusätzlich unter /mnt/gemeinsam ein (bind mount) und prüfen Sie das Ergebnis mit findmnt.
/etc/fstab
Zweck
Die Datei /etc/fstab (file system table) legt fest, welche Dateisysteme beim Booten automatisch eingehängt werden, an welchem Mountpunkt und mit welchen Optionen. Sie ist außerdem die Vorlage für unvollständige mount-Aufrufe: steht ein Gerät oder Mountpunkt in der fstab, genügt mount /mnt/docs und der Rest wird ergänzt.
Aufbau
Jede Zeile beschreibt ein Dateisystem mit sechs durch Leerzeichen getrennten Feldern. Kommentare beginnen mit #.
# Gerät Mountpunkt Typ Optionen Dump Check UUID=581cc4b6-... / ext4 errors=remount-ro 0 1 UUID=5b8ed1c7-... none swap sw 0 0 /dev/sdb1 /mnt/docs ext4 defaults 0 2 /dev/sr0 /media/cdrom udf,iso9660 user,noauto,exec 0 0 192.168.240.1:/export/share /export nfs defaults 0 0
| Feld | Name | Bedeutung |
|---|---|---|
| 1 | Gerät | Gerätedatei, UUID, Label oder Netzwerkfreigabe. UUID ist am robustesten, weil sie sich beim Umstecken nicht ändert – Gerätenamen wie /dev/sdb1 können wandern.
|
| 2 | Mountpunkt | Verzeichnis, auf das eingehängt wird. Bei Swap steht hier none oder swap.
|
| 3 | Typ | Dateisystemtyp: ext4, xfs, btrfs, swap, nfs. auto lässt den Kernel raten.
|
| 4 | Optionen | Kommagetrennte Mount-Optionen, dieselben wie bei mount -o (siehe Allgemeine Mount-Optionen).
|
| 5 | Dump | Markierung für das alte Backup-Programm dump. Heute praktisch bedeutungslos – steht fast immer auf 0.
|
| 6 | Check | Reihenfolge der fsck-Prüfung beim Booten. |
Das Check-Feld richtig setzen
1– nur für das Root-Dateisystem. Es wird zuerst und allein geprüft.2– für alle anderen ext-Dateisysteme. Sie werden nach Root und untereinander parallel geprüft.0– keine Prüfung beim Booten. Für btrfs und xfs immer 0, denn derenfscktut beim Start nichts; auch Swap und Netzlaufwerke stehen auf 0.
Die UUID herausfinden
Der Gerätename in Feld 1 sollte eine UUID sein. Beide Werkzeuge zeigen sie:
- blkid /dev/sdb1
- lsblk -f
Nach dem Ändern: testen, nicht raten
Ein fehlerhafter fstab-Eintrag kann das Booten verhindern – das System bleibt dann im Notfall-Prompt (emergency mode) hängen. Deshalb vor dem Neustart prüfen.
Zuerst die Syntax, ohne etwas einzuhängen. findmnt --verify findet Tippfehler, unbekannte Typen und UUIDs, die es nicht gibt:
- findmnt --verify
Dann tatsächlich einhängen:
- mount -a
Kommt keine Fehlermeldung, sind die Einträge in Ordnung. Erst dann neu starten. mount -a prüft allerdings nur Einträge ohne noauto, die noch nicht eingehängt sind.
Auf systemd-Systemen (Debian, Rocky) erzeugt systemd aus der fstab eigene Mount-Units. Nach einer Änderung weist mount selbst darauf hin, dass systemd noch die alte Fassung kennt:
mount: (hint) your fstab has been modified, but systemd still uses
the old version; use 'systemctl daemon-reload' to reload.
- systemctl daemon-reload
Fehlende Platten: nofail
Fehlt beim Booten eine Platte, die in der fstab steht – etwa eine USB-Platte oder ein Netzlaufwerk –, wartet systemd und landet im Notfall-Prompt. Mit nofail wird der Eintrag übersprungen, wenn das Gerät fehlt; x-systemd.device-timeout=10s verkürzt das Warten:
UUID=... /mnt/backup ext4 defaults,nofail,x-systemd.device-timeout=10s 0 2
Netzlaufwerke bekommen zusätzlich _netdev, damit sie erst nach dem Netzwerk eingehängt werden.
Einen Eintrag entschärfen
Soll ein Dateisystem vorerst nicht automatisch gemountet werden, aber der Eintrag bleiben, hilft die Option noauto in Feld 4. Dann wird es beim Booten übersprungen und lässt sich später von Hand über den Mountpunkt einhängen.
/dev/sdb3 /mnt/video ext4 noauto 0 0
Aufgaben zu /etc/fstab
Vorbereitung: eine leere Datenplatte /dev/sdc. /dev/sda bleibt unberührt.
- Erstellen Sie auf /dev/sdc vier Partitionen (mit fdisk oder gdisk).
- Formatieren Sie die vier Partitionen mit ext4 in Standardeinstellungen.
- Legen Sie die Mountpunkte /mnt/media, /mnt/misc, /mnt/video und /mnt/docs an.
- Ermitteln Sie die UUIDs der vier Partitionen.
- Tragen Sie die 1. Partition (media) so ein, dass kein Ausführen erlaubt ist und ACLs aktiv sind.
- Tragen Sie die 2. Partition (misc) so ein: kein SUID, kein dev, nur lesend.
- Tragen Sie die 3. Partition (video) so ein, dass sie nicht automatisch gemountet wird.
- Tragen Sie die 4. Partition (docs) so ein: automatisches Mounten, normale Nutzer dürfen mounten.
- Testen Sie alle Einträge, ohne neu zu starten.
- Prüfen Sie mit findmnt, ob media wirklich noexec und misc wirklich ro gemountet ist.
Fleißaufgabe: Datei als Dateisystem (Loop)
Statt einer echten Partition lässt sich auch eine Datei als Dateisystem einhängen – über ein Loop-Gerät.
- Erstellen Sie eine leere Datei von 2 GB.
- Formatieren Sie die Datei mit ext4.
- Legen Sie den Mountpunkt /mnt/share an und tragen Sie die Datei mit der Option loop in die /etc/fstab ein.
- Testen Sie den Eintrag.
Entferntes System mounten
- Installiere auf dem Debian System nfs-common
- Schauen dir mit showmount -e nfs-server.sec-labs.de welches Verzeichnis er freigibt
- Erstelle auf dem Debian System ein Verzeichnis mkdir -p /mnt/data
- Ergänze die /etc/fstab
- //nfs-server.sec-labs.de:<Freigabe von Punkt2> /mnt/data nfs defaults 0 0
- mounte mit mount -a und systemctl daemon-reload
- Wie gross ist diese Freigabe