VMware ESXi and vSphere Cluster Management
FHS: Der Filesystem Hierarchy Standard unter Linux
Lerne die Linux-Verzeichnisstruktur nach dem FHS kennen: Root-Verzeichnis, /etc, /home, /usr, /var, /tmp und wichtige Shell-Befehle.
Der Filesystem Hierarchy Standard, kurz FHS, beschreibt eine gemeinsame Konvention für die Struktur und die Inhalte von Verzeichnissen in Linux und anderen Unix-ähnlichen Betriebssystemen. Er legt fest, welche Arten von Dateien typischerweise an welchen Orten liegen.
Die meisten Linux-Distributionen folgen diesen Grundsätzen weitgehend. Die konkrete Umsetzung kann sich jedoch unterscheiden: Distributionen können zusätzliche Verzeichnisse verwenden, Dateien anders organisieren oder bestimmte Verzeichnisse technisch zusammenführen.
Was ist der FHS?
Ein Verzeichnis ist eine ordnerartige Struktur, die Dateien und weitere Unterverzeichnisse organisiert. Ein Pfad beschreibt den Speicherort eines solchen Objekts, zum Beispiel /etc.
Der FHS ist keine vollständige Bedienungsanleitung für jede Linux-Installation. Er ist vielmehr eine Vereinbarung darüber, welche Funktion ein Verzeichnis normalerweise besitzt. Dadurch können Menschen, Programme, Paketverwaltungen und Administrationswerkzeuge mit einer vorhersehbaren Dateisystemstruktur arbeiten.
Der FHS entwickelte sich aus dem älteren FSSTND, dem Filesystem Standard. Der FSSTND war ein früherer Standardisierungsversuch für die Verzeichnisstruktur von Linux. Der FHS führte diese Idee weiter und bezog weitere Unix-ähnliche Systeme sowie zusätzliche Anwendungsfälle ein.
Warum eine standardisierte Verzeichnisstruktur nützlich ist
Ohne gemeinsame Konventionen müsste ein Administrator für jede Distribution völlig andere Speicherorte für Programme, Einstellungen oder Protokolle lernen. Der FHS schafft eine gemeinsame Orientierung.
- Anwender finden persönliche Dateien typischerweise unter
/homeund Programme über bekannte Befehle. - Administratoren wissen, dass systemweite Konfiguration häufig unter
/etcund Protokolle häufig unter/varliegen. - Paketverwaltungen können Dateien nach ihrer Funktion in vorhersehbare Bereiche installieren.
- Softwareentwickler müssen nicht für jede Distribution völlig unterschiedliche Grundpfade voraussetzen.
- Systemwerkzeuge können standardisierte Orte für ausführbare Dateien, Bibliotheken, Geräte und Laufzeitdaten verwenden.
Die Standardisierung macht Systeme wiedererkennbarer, ersetzt aber keine Dokumentation. Ein Dienst kann seine Konfiguration zum Beispiel direkt in /etc oder in einem Unterverzeichnis wie /etc mit einem dienstspezifischen Namen ablegen. Auch Desktop-Umgebungen, Paketformate und Systemkonfigurationen beeinflussen die genaue Struktur.
Das Root-Verzeichnis /
Das Zeichen / bezeichnet das Root-Verzeichnis. Es ist der oberste Punkt der Linux-Dateisystemhierarchie. Alle weiteren Dateien und Verzeichnisse sind unterhalb dieses Punktes angeordnet.
Ein absoluter Pfad beginnt bei diesem obersten Punkt. Der Pfad /etc/ssh bezeichnet beispielsweise das Verzeichnis ssh unterhalb von /etc, unabhängig davon, in welchem Verzeichnis die Shell gerade arbeitet.
Das Root-Verzeichnis darf nicht mit /root verwechselt werden:
/ist der Anfangspunkt des gesamten Dateisystems./rootist normalerweise das Home-Verzeichnis des administrativen Root-Benutzers.
Der Root-Benutzer ist ein administratives Benutzerkonto mit weitreichenden Rechten. Das Root-Verzeichnis ist dagegen ein Bestandteil der Dateisystemhierarchie. Beide Begriffe haben unterschiedliche Bedeutungen.
Wichtige FHS-Verzeichnisse
Die folgende Übersicht zeigt die wichtigsten Verzeichnisse für den Einstieg. Sie beschreibt den typischen Zweck, nicht zwingend jede Einzelheit einer bestimmten Distribution.
Begriffe hinter den Verzeichnissen
Programme und Bibliotheken
Eine ausführbare Datei ist eine Programmdatei, die direkt oder über die Shell gestartet werden kann. Grundlegende Programme wie ls und cp wurden traditionell in /bin erwartet. Administrative Systemprogramme lagen typischerweise in /sbin.
Eine Bibliothek enthält wiederverwendbaren Programmcode, den andere Programme nutzen. Für den grundlegenden Systembetrieb wichtige Bibliotheken werden traditionell unter /lib erwartet. Weitere Bibliotheken liegen häufig unter /usr/lib.
Gerätedateien und Einhängepunkte
Eine Gerätedatei ist eine Schnittstelle im Dateisystem, über die Programme mit einem Gerät oder einem virtuellen Kernel-Gerät kommunizieren. Solche Einträge findet man unter /dev. Sie sind nicht mit normalen Dateien gleichzusetzen, auch wenn sie wie Dateisystemobjekte angesprochen werden.
Ein Einhängepunkt ist ein Verzeichnis, unter dem ein weiteres Dateisystem verfügbar gemacht wird. Wechselmedien werden häufig unter /media eingebunden. Nach dem Einhängen kann ein USB-Stick beispielsweise über einen Unterpfad von /media erreichbar sein.
Konfiguration und veränderliche Daten
Eine Konfigurationsdatei enthält Einstellungen für das System oder ein Programm. Systemweite Konfiguration gehört häufig nach /etc. Persönliche Einstellungen eines Benutzers liegen dagegen meist in dessen Home-Verzeichnis unter /home.
/var enthält Daten, die sich im laufenden Betrieb verändern. Dazu gehören Log-Dateien, also Protokolldateien mit Ereignissen und Meldungen, außerdem Caches, Druck- oder Mail-Warteschlangen und Laufzeitdaten.
/tmp ist für kurzlebige temporäre Dateien vorgesehen. Programme können dort Zwischenresultate ablegen. Das Verzeichnis kann beim Neustart oder durch automatische Bereinigungsdienste geleert werden. Wichtige oder dauerhaft benötigte Daten gehören daher nicht ausschließlich nach /tmp.
Eine typische Verzeichnisstruktur untersuchen
Auf einer Ubuntu-Installation oder einer anderen verbreiteten Linux-Distribution kannst du zunächst das aktuelle Arbeitsverzeichnis und die Einträge direkt unter / anzeigen:
pwd
ls /
pwd steht für „print working directory“ und zeigt das aktuelle Arbeitsverzeichnis. ls / listet die wichtigsten Verzeichnisse direkt unter dem Root-Verzeichnis auf.
Systemweite Konfiguration und Protokolle lassen sich beispielhaft so untersuchen:
ls -la /etc
ls -la /var/log
Die Option -l fordert eine ausführliche Darstellung an, während -a auch versteckte Einträge berücksichtigt. Für das Lesen bestimmter Dateien können zusätzliche Berechtigungen erforderlich sein.
Mit findmnt kannst du feststellen, welche Dateisysteme eingehängt sind und welche Einhängepunkte tatsächlich verwendet werden:
findmnt
Das ist besonders hilfreich, wenn ein USB-Stick nicht unter dem erwarteten Pfad sichtbar ist.
Moderne Zusammenführung von /bin und /sbin
Auf modernen Linux-Systemen sind die traditionellen Verzeichnisse nicht immer als vollständig getrennte Speicherorte umgesetzt. Bei einer sogenannten usr-Merge können /bin und /sbin Verweise auf /usr/bin beziehungsweise /usr/sbin sein.
Der funktionale Zweck bleibt dabei verständlich: Ein Aufruf wie ls funktioniert weiterhin über den bekannten Pfad oder über die Shell-Suche. Nur die technische Ablage ist anders organisiert.
readlink -f /bin /sbin
Mit readlink -f lässt sich der aufgelöste Zielpfad eines Verweises anzeigen. Gibt der Befehl beispielsweise einen Pfad unter /usr aus, wird die Zusammenführung in dieser Umgebung sichtbar.
Abgrenzung ähnlich wirkender Pfade
Praktische Beispiele
Die Konfiguration eines Dienstes finden
Wenn du die systemweite Einstellung eines Dienstes suchst, ist /etc der naheliegende Ausgangspunkt. Prüfe dort auch passende Unterverzeichnisse. Der konkrete Dateiname ist nicht zwingend auf allen Distributionen gleich.
ls -la /etc
Persönliche Dateien ablegen
Dokumente, Downloads und persönliche Konfigurationsdateien eines normalen Benutzers gehören typischerweise in ein Unterverzeichnis von /home, zum Beispiel /home/alex. Dadurch bleiben Benutzerdateien von systemweiten Dateien getrennt.
Systemprotokolle prüfen
Bei der Fehlersuche ist /var ein sinnvoller Ausgangspunkt, insbesondere /var/log. Dort können Protokolle von Systemdiensten und Anwendungen liegen.
ls -la /var/log
Einen USB-Stick verwenden
Ein automatisch eingebundenes Wechselmedium ist häufig unter /media erreichbar. Wenn es dort nicht sichtbar ist, muss das nicht bedeuten, dass das Gerät nicht erkannt wurde. Die Desktop-Umgebung oder eine manuelle Einbindung kann einen anderen Einhängepunkt verwenden.
findmnt
Fehlersuche bei Abweichungen
Eine Konfigurationsdatei liegt nicht direkt unter /etc
Konfiguration kann in einem Unterverzeichnis liegen, durch Paket- oder Dienstkonventionen anders organisiert sein oder von distributionsspezifischen Werkzeugen verwaltet werden.
- Prüfe passende Unterverzeichnisse unter
/etc. - Konsultiere die Dokumentation des installierten Dienstes.
- Gehe nicht davon aus, dass jeder konkrete Dateiname auf allen Distributionen identisch ist.
/bin ist kein separates Verzeichnis
Auf Systemen mit zusammengeführten usr-Verzeichnissen kann /bin ein Verweis auf /usr/bin sein.
- Prüfe den Verweis mit
readlink -f /binoderreadlink -f /bin /sbin. - Unterscheide den funktionalen Zweck eines Pfades von seiner technischen Umsetzung.
Eine Datei in /tmp ist nach dem Neustart verschwunden
Das kann dem vorgesehenen Verhalten entsprechen. Temporäre Bereiche werden beim Neustart oder automatisiert bereinigt.
Speichere dauerhafte Daten in einem geeigneten Benutzer- oder Anwendungsdatenverzeichnis und lege wichtige Daten niemals ausschließlich in /tmp ab.
Ein Wechseldatenträger ist nicht unter /media sichtbar
Der Einhängepunkt hängt von Distribution, Desktop-Umgebung und Einbindungsart ab.
- Zeige die eingehängten Dateisysteme mit
findmntan. - Verwende den tatsächlich angezeigten Einhängepunkt.
- Verlasse dich nicht ausschließlich auf den typischen Pfad
/media.
Prüfungsrelevante Zusammenfassung
- Der FHS ist eine Konvention für die Verzeichnisstruktur von Linux und Unix-ähnlichen Systemen.
- Er entwickelte sich aus dem älteren FSSTND.
/ist das Root-Verzeichnis und der Ausgangspunkt der gesamten Hierarchie./rootist dagegen das Home-Verzeichnis des administrativen Root-Benutzers./etcenthält typischerweise systemweite Konfiguration./homeenthält persönliche Daten normaler Benutzer./usrenthält gemeinsam nutzbare Programme, Bibliotheken und Daten./varenthält veränderliche Daten wie Protokolle und Caches./tmpist für kurzlebige temporäre Dateien bestimmt./devstellt Geräte über Gerätedateien dar, während/mediahäufig als Einhängepunkt für Wechselmedien dient.- Distributionen folgen dem FHS weitgehend, können aber zusätzliche Verzeichnisse und abweichende technische Umsetzungen besitzen.