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 /home und Programme über bekannte Befehle.
  • Administratoren wissen, dass systemweite Konfiguration häufig unter /etc und Protokolle häufig unter /var liegen.
  • 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.
  • /root ist 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.

VerzeichnisHauptzweckTypische Inhalte oder BeispieleHinweise

/ – Oberster Punkt der Hierarchie – Alle weiteren Verzeichnisse – Nicht mit /root verwechseln

/boot – Dateien für den Systemstart – Kernel-Dateien und Bootloader-bezogene Dateien – Für den Startvorgang besonders wichtig

/bin – Grundlegende ausführbare Programme – ls, cp, mount – Auf modernen Systemen möglicherweise ein Verweis auf /usr/bin

/dev – Gerätedateien – Datenträger, optische Laufwerke und virtuelle Geräte – Gerätedateien sind Schnittstellen für den Zugriff auf Geräte

/sbin – Wichtige Systemprogramme – Programme für administrative Aufgaben – Kann auf moderne Weise mit /usr/sbin zusammengeführt sein

/etc – Systemweite Konfiguration – Konfigurationsdateien und Konfigurationsverzeichnisse – Einstellungen liegen oft in Unterverzeichnissen

/home – Home-Verzeichnisse normaler Benutzer – Dokumente, Downloads und benutzerspezifische Einstellungen – Ein Benutzer kann zum Beispiel /home/alex besitzen

/lib – Grundlegende Programmbibliotheken – Wiederverwendbarer Code für wichtige Programme – Bibliotheken können auf modernen Systemen unter /usr/lib zusammengeführt sein

/media – Einhängepunkt für Wechselmedien – USB-Sticks und CDs/DVDs – Der tatsächliche Einhängepunkt kann abweichen

/usr – Großer Bereich für gemeinsam nutzbare Software – Benutzerprogramme, Bibliotheken, Dokumentation und weitere Daten – Nicht mit /home verwechseln

/var – Veränderliche Daten – Log-Dateien, Caches, Warteschlangen und Laufzeitdaten – Inhalte ändern sich während des Betriebs

/tmp – Kurzlebige temporäre Dateien – Zwischen- und Arbeitsdateien von Programmen – Inhalte können automatisch oder beim Neustart gelöscht werden

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

Pfad oder BegriffBedeutungWichtige Abgrenzung

/ gegenüber /root/ ist die oberste Dateisystemebene; /root ist das Home-Verzeichnis des Root-Benutzers – Root-Verzeichnis und Root-Benutzer bezeichnen nicht dasselbe

/bin gegenüber /sbin/bin enthält traditionell grundlegende Programme; /sbin enthält traditionell wichtige System- und Verwaltungsprogramme – Auf aktuellen Systemen können beide Pfade auf Bereiche unter /usr verweisen

/usr gegenüber /home/usr enthält gemeinsam nutzbare Software und Daten; /home enthält persönliche Benutzerdaten – Installierte Programme gehören nicht automatisch in das Home-Verzeichnis eines Benutzers

/var gegenüber /tmp/var enthält dauerhaft oder längerfristig benötigte veränderliche Daten; /tmp ist für kurzlebige temporäre Daten gedacht – Dateien in /tmp können deutlich früher gelöscht werden

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.

  1. Prüfe passende Unterverzeichnisse unter /etc.
  2. Konsultiere die Dokumentation des installierten Dienstes.
  3. 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.

  1. Prüfe den Verweis mit readlink -f /bin oder readlink -f /bin /sbin.
  2. 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.

  1. Zeige die eingehängten Dateisysteme mit findmnt an.
  2. Verwende den tatsächlich angezeigten Einhängepunkt.
  3. 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.
  • /root ist dagegen das Home-Verzeichnis des administrativen Root-Benutzers.
  • /etc enthält typischerweise systemweite Konfiguration.
  • /home enthält persönliche Daten normaler Benutzer.
  • /usr enthält gemeinsam nutzbare Programme, Bibliotheken und Daten.
  • /var enthält veränderliche Daten wie Protokolle und Caches.
  • /tmp ist für kurzlebige temporäre Dateien bestimmt.
  • /dev stellt Geräte über Gerätedateien dar, während /media häufig als Einhängepunkt für Wechselmedien dient.
  • Distributionen folgen dem FHS weitgehend, können aber zusätzliche Verzeichnisse und abweichende technische Umsetzungen besitzen.