Der Filesystem Hierarchy Standard – kurz FHS – ist ein grundlegendes Konzept, das die Organisation von Dateisystemen in UNIX-ähnlichen Betriebssystemen wie Linux beschreibt. Er legt fest, wie und wo Dateien und Verzeichnisse innerhalb des Systems angeordnet sein sollen, um Kompatibilität, Interoperabilität und eine klare Struktur zu gewährleisten. Seit seiner ersten Veröffentlichung im Jahr 1994 hat sich der FHS zu einem wichtigen Bestandteil moderner Systemarchitektur entwickelt und ist aus dem Alltag von Systemadministratoren sowie Softwareentwicklern nicht mehr wegzudenken. Die Hauptidee hinter dem FHS ist es, einen gemeinsamen Rahmen zu schaffen, auf den sich Softwareanbieter, Betriebssystementwickler und Anwender gleichermaßen verlassen können. Indem es eine klare Vorgabe für die Platzierung von Systemdateien gibt, wird vermieden, dass Programme an unterschiedlichen Orten installiert werden, was sonst zu Konflikten, Schwierigkeiten bei der Wartung und zu Problemen bei Updates oder Backups führen könnte.
Das FHS ist in mehrere Hierarchiestufen und Verzeichnisse unterteilt, die jeweils eine spezielle Funktion oder Bedeutung haben. An oberster Stelle steht das Root-Verzeichnis „/“, das als Ausgangspunkt aller anderen Verzeichnisse fungiert. Es stellt sicher, dass alle zur Systeminitialisierung und grundlegenden Verwaltung notwendigen Dateien vorhanden sind. Innerhalb dieses Root-Verzeichnisses befinden sich essenzielle Unterordner wie „/bin“ für benutzerrelevante Befehle und „/sbin“ für systembezogene Binärdateien, die typischerweise nur Administratoren zugänglich sind. Das Verzeichnis „/etc“ beherbergt die gesamte system- und host-spezifische Konfiguration.
Hier finden sich Dateien, die Einstellungen für Dienste und Programme steuern, wobei das FHS betont, dass sich in „/etc“ ausschließlich Konfigurationsdateien befinden sollten, keine auszuführenden Binärdateien. Dies trägt zu einer übersichtlichen Trennung zwischen Code und Konfiguration bei. „/dev“ enthält spezielle Gerätedateien, die mechanische Komponenten des Systems oder virtuelle Geräte repräsentieren. Die Verwaltung dieser Dateien ist entscheidend für Hardwarezugriffe und das Zusammenspiel zwischen Software und Betriebssystemkern. Das Verzeichnis „/var“ ist demgegenwartigen variablen Daten gewidmet, beispielsweise Logfiles, temporären Dateien oder Spool-Verzeichnissen für Druckaufträge oder E-Mails.
Die Trennung zwischen statischen und variablen Dateien ist eines der Kernprinzipien des FHS, da es zum Beispiel möglich sein soll, Verzeichnisse wie „/usr“ oder „/var“ auf separaten Partitionen oder sogar auf verschiedenen Servern zu verwalten, ohne die Funktionalität zu beeinträchtigen. Das „/usr“-Verzeichnis gilt als sekundärer Hierarchiebaum und beinhaltet die Mehrzahl der installierten Programme, Bibliotheken und Dokumentationen. Im Vergleich zum Root-Dateisystem ist „/usr“ in der Regel schreibgeschützt und kann über das Netzwerk auf verschiedene Hosts verteilt werden, wodurch eine effiziente Verwaltung in großen Netzwerken ermöglicht wird. Ein weiterer wichtiger Aspekt ist die Bedeutung von „/opt“, das für optionale und zusätzliche Softwarepakete vorgesehen ist. Dieser Bereich erlaubt es Systemadministratoren und Distributionen, Zusatzsoftware isoliert von der Standardinstallation abzulegen, um so Konflikte und Kompatibilitätsprobleme zu verhindern.
Die Trennung von temporären Dateien und Sitzungsdateien in „/tmp“ beziehungsweise „/run“ und „/var/run“ dient der effizienten Systemverwaltung und schafft klare Regeln für die Lebensdauer dieser Daten. Während „/tmp“ für temporäre Dateien genutzt wird, die zwischen Neustarts gelöscht werden dürfen, enthält „/var/tmp“ Dateien, die auch nach einem Neustart persistieren sollen. Neben der strukturellen Klarheit bietet das FHS auch Vorteile bei der Systemwiederherstellung, der Sicherheit und bei der Entwicklung von Anwendungen. So müssen Programme nicht mehr auf unübersichtliche oder sich ändernde Pfade zugreifen, sondern können sich auf standardisierte Pfade verlassen. Das erleichtert nicht nur die Portabilität der Software, sondern trägt auch dazu bei, dass Systeme leichter zu sichern und zu warten sind.
Darüber hinaus sind die Regeln des FHS auch für die Planung von Backups und die Partitionierung von Festplatten essenziell. Durch die klare Trennung zwischen statischen und dynamischen Inhalten können unterschiedliche Backup-Strategien verfolgt und die Verteilung auf verschiedene Partitionen sinnvoll durchgeführt werden. Neben der Risikominimierung bei Systemabstürzen wird dadurch auch die Systemperformance optimiert. Die Entwicklung des Filesystem Hierarchy Standard wurde von der Linux Foundation sowie zahlreichen Experten aus der UNIX-Community getragen und steht für Konsens und Best Practices, die in der Praxis erprobt wurden. Die Norm wird regelmäßig aktualisiert und angepasst, um neuen Anforderungen in Bezug auf neue Technologien, Software-Strukturen und Sicherheitsaspekte gerecht zu werden.
Für den Endanwender und den Systemadministrator bildet das FHS eine verlässliche Grundlage, die nicht nur Ordnung schafft, sondern auch Trainingsaufwände reduziert und die Fehlersuche erleichtert. Ein Beispiel hierfür ist die Platzierung von essentiellen Binaries im Verzeichnis „/bin“, die selbst im Single-User-Modus verfügbar sein müssen, um Systemwiederherstellungen oder Reparaturen durchführen zu können. Ebenso wichtig ist die Tatsache, dass es Anwendungen verbietet, eigenmächtig neue Unterverzeichnisse im Root-Verzeichnis anzulegen, um die Komplexität und das Risiko von Fehlkonfigurationen zu minimieren. Stattdessen müssen Programme innerhalb der vorgesehenen Hierarchien ihre Dateien ablegen, was die Standardisierung fördert und die Administration vereinfacht. Die durch das FHS vorgegebene Struktur spiegelt sich auch in den meisten Linux-Distributionen wider, von denen viele strikt auf deren Einhaltung bestehen.