Filesystem Hierarchy Standard (FHS)

Das Dateisystem ist baumartig strukturiert und wird beginnend mit dem sogenannten Root-Verzeichnis (/) beginnend dargestellt. /root ist das Home-Verzeichnis des Benutzers root.

Der Filesystem Hierarchy Standard (FHS) hat sich historisch aus frühen UNIX-Versionen wie der Berkeley Software Distribution (BSD) entwickelt. Der FHS stellt Linux-Entwicklern und Systemadministratoren eine Standard-Verzeichnisstruktur für das Dateisystem in den verschiedenen Distributionen zur Verfügung.

Die offizielle Definition findet sich hier: https://refspecs.linuxfoundation.org/fhs.shtml

Bemerkung

CentOS 7 weicht aus diversen Gründen erstmals vom FHS ab, in dem es auf vier Verzeichnisse der obersten Ebene verzichtet und diese per Soft Link unter dem /usr-Verzeichnis anordnet: /bin, /lib, /lib64 und /sbin, die ursprünglich Tools enthielten, um /usr mounten zu können - was 2012 in Fedora 17 Einzug hielt, siehe https://fedoraproject.org/wiki/Features/UsrMove.

man hier beschreibt die Filesystem-Hierarchie direkt im System.

/boot

Boot Loader-Dateien

/dev

Hier finden sich alle angeschlossenen Geräte (Devices) in Form von Dateien. Spezielle Gerätedateien sind /dev/full (gibt immer „No space left on device“ zurück; wird zum Testen von Programmen genutzt), /dev/null (verwirft alle dorthin geschriebenen Daten und meldet den Schreibvorgang erfolgreich zurück), /dev/random (liefert sehr gut verteilte Zufallszahlen), /dev/urandom (liefert schlechter verteilte Zufallszahlen, ist dafür aber um Faktoren schneller als /dev/random) und /dev/zero (liefert Nullen zurück). /dev/shm ist die Implementierung eines Shared Memory-Konzepts.

/etc

Konfigurationsdateien

/home

Home-Verzeichnisse der Benutzer

/media

Wechseldatenträger (USB-Sticks etc.)

/mnt

Gemountete Dateisysteme

/opt

Zusatz-Software (z.B. Oracle DB-Server, IBM-Software u.a.)

/proc

Pseudo-Dateisystem; Informationen von und für Prozesse, den Kernel und Dienste

/root

Home-Verzeichnis des root-Benutzers

/run

Konsolidiert /var/run und /var/lock aus früheren Versionen.

/tmp

Verzeichnis für temporäre Dateien. Das Verzeichnis ist für alle Benutzer zum Schreiben freigegeben und muss ein Sticky-Bit besitzen. Unter RHEL werden Dateien älter als 10 Tage automatisch gelöscht.

/usr

Unix System Resources - nicht Host-spezifische Dateien (das Basis-Betriebssystem), was über mehrere Rechner geteilt werden kann; immer mehr aber auch Benutzer-Programme, da es heute als „user“-Verzeichnis missverstanden wird.

/usr/bin

Kommandos für alle Benutzer - im FHS unter /bin angeordnet

/usr/lib

Gemeinsam verwendete Bibliotheken und Kernel-Module - im FHS unter /lib angeordnet

/usr/lib64

Gemeinsam verwendete Bibliotheken und Kernel-Module (64-bit) - im FHS unter /lib64 angeordnet

/usr/sbin

Kommandos, die nur durch den Benutzer root ausgeführt werden können - im FHS unter /sbin angeordnet

/var

Daten veränderlicher Grösse (z.B. Log- und Anwendungs-Dateien). Auf kritischen Systemen sollte dieses Verzeichnis auf einer separaten Partition untergebracht werden. Läuft diese Partition voll, wird das Gesamtsystem trotzdem weiterlaufen. Unter RHEL werden Dateien in /var/tmp älter als 30 Tage automatisch gelöscht.

Ein .d im Verzeichnisnamen wie beispielsweise /etc/Muttrc.d steht einfach für „Directory“ . Gab es anfangs nur die Datei /etc/Muttrc, sollte der spätere Zusatz .d anzeigen, dass es sich hier um ein Verzeichnis handelt, welches eine Vielzahl an Konfigurationsdateien aufnehmen kann (abgesehen davon ist es nicht möglich, eine Datei und ein Verzeichnis mit dem gleichen Namen im Dateisystem anzulegen).

Wichtigere Dateien wie beispielsweise CHANGELOG, CONTRIBUTING, LICENSE oder README wurden übrigens per stiller Konvention grossgeschrieben, da sie früher in einem Verzeichnis-Listing so immer an erster Stelle angezeigt wurden. Das hat sich bis heute gehalten.

Built on 2022-06-03