Wo Linux welche Dateien ablegt — der Verzeichnisbaum erklärt
Inhaltsverzeichnis:
Ein frisch installiertes Linux zeigt im Dateimanager weder ein Laufwerk C noch ein Laufwerk D. Es zeigt einen einzigen Baum, der bei / beginnt und sich in etwa zwanzig Verzeichnisse verzweigt. Beschrieben ist diese Aufteilung im Filesystem Hierarchy Standard, dessen Vorläufer FSSTND bereits 1994 erschien. Die aktuelle Fassung 3.0 datiert auf Juni 2015, seit November 2025 pflegt freedesktop.org das Dokument. Debian verpflichtet seine Pakete in der Policy ausdrücklich auf diese Version. Der Standard auf jedem Debian-System bestimmt, wo eine installierte Software ihre Dateien ablegt. Diese Vorgabe reicht bis hinunter zur einzelnen Handbuchseite eines Programms.
Die Gliederung ordnet nach dem Zweck der Daten, nicht nach dem Hersteller der Software. Programme liegen bei den Programmen, Konfigurationsdateien bei den Konfigurationsdateien, veränderliche Betriebsdaten getrennt von beidem. Ein Administrator findet auf einem fremden Server die Einstellungen eines Dienstes in /etc. Seine Protokolle liegen in /var/log, seine Datenbanken in /var/lib. Dafür muss er die eingesetzte Distribution nicht kennen. Diese Vorhersagbarkeit trägt jedes Backup-Konzept und jede Automatisierung, weil sich die Pfade über Jahre hinweg kaum verändern.
Ein Verzeichnisbaum statt Laufwerksbuchstaben
Windows weist jedem Datenträger einen eigenen Buchstaben zu. Linux hängt Datenträger in den vorhandenen Baum ein, dieser Vorgang heißt Mounten. Die zweite Partition der ersten SATA-Platte erscheint zunächst als Gerätedatei /dev/sda2. Ihren Inhalt zeigt das System erst an einem Einhängepunkt wie /mnt/daten, also etwa nach einem Aufruf von mount. Der Befehl mount stellt diese Verbindung her, die Datei /etc/fstab beschreibt alle Einhängepunkte, die beim Start automatisch entstehen sollen. Ein bereits gefülltes Verzeichnis behält dabei seine alten Dateien, verdeckt sie aber, solange an dieser Stelle ein Datenträger hängt.

/mnt ist laut Standard für kurzfristige Einhängevorgänge des Administrators gedacht. /media nimmt Wechselmedien auf, die der Desktop selbsttätig einbindet. Der Pfad lautet dabei meist /media/benutzername/USB-Stick, etwa bei einem angesteckten Stick. Netzwerkfreigaben, verschlüsselte Container und externe Platten erscheinen an derselben Stelle im gemeinsamen Baum. /boot bekommt häufig eine eigene Partition und enthält den Kernel als vmlinuz-Datei, das Initramfs und die Konfiguration des Bootloaders. Auf Rechnern mit UEFI liegt die EFI-Systempartition eingehängt unter /boot/efi, bei systemd-boot auch unter /efi. Diese Partition ist mit FAT32 formatiert, damit die Firmware des Mainboards sie ohne Treiber lesen kann.
Konfiguration in /etc, veränderliche Daten in /var
/etc sammelt die Konfiguration des einzelnen Rechners, ausschließlich als Textdateien. Programme gehören dort nicht hin, der Standard untersagt ausführbare Binärdateien in diesem Ast. Moderne Dienste ergänzen ihre Hauptdatei um Verzeichnisse mit der Endung .d. Beispiele dafür sind /etc/ssh/sshd_config.d oder /etc/apt/sources.list.d. Dort legen Pakete und Administratoren einzelne Fragmente der Konfiguration ab. Bei systemd gilt eine feste Rangfolge. Eine Unit-Datei in /etc/systemd/system sticht die gleichnamige Vorlage aus /usr/lib/systemd/system aus. Der Befehl systemctl edit legt genau dort eine override.conf an, ohne die Vorlage des Pakets zu verändern.
/var nimmt alles auf, was im laufenden Betrieb wächst. In /var/lib stehen die Zustandsdaten der Dienste, etwa die Paketdatenbank von dpkg oder die Tabellen von MariaDB. /var/cache sammelt Zwischenspeicher wie heruntergeladene .deb-Pakete. In /var/spool warten Druckaufträge und Mails in ihren Warteschlangen auf die Auslieferung. Für Inhalte, die ein Server nach außen ausliefert, sieht der Standard /srv vor, also Webseiten oder FTP-Bäume. Debian und Ubuntu legen ihre Webinhalte abweichend davon nach /var/www, Red Hat verwendet /var/www/html. Die Postfächer lokaler Nutzer stehen in /var/mail, temporäre Dateien mit längerer Lebensdauer in /var/tmp.
Wo die Logs liegen und was das Journal daran ändert
Protokolle stehen in /var/log. Klassische Textdateien wie syslog, messages, auth.log oder secure lassen sich mit less und grep durchsuchen. Dazu kommen anwendungseigene Dateien wie /var/log/apt/history.log oder /var/log/nginx/access.log, die jeder Dienst selbst füllt. Das Werkzeug logrotate rotiert diese Dateien in festen Abständen und komprimiert sie. Alte Stände verschwinden danach automatisch, nämlich nach der in /etc/logrotate.d hinterlegten Frist. Ohne Rotation füllt ein gesprächiger Dienst die Partition, was auf Servern mit knapp bemessenem /var regelmäßig zu Ausfällen führt. Auf einer Minimalinstallation ohne rsyslog fehlen die Dateien syslog und messages allerdings vollständig.

systemd protokolliert daneben in ein eigenes Binärformat, das Journal. Existiert das Verzeichnis /var/log/journal, schreibt journald dauerhaft dorthin, andernfalls landen die Meldungen in /run/log/journal und sind nach einem Neustart verschwunden. Diese Voreinstellung trägt den Namen Storage=auto und lässt sich in /etc/systemd/journald.conf auf persistent umstellen. Der belegte Platz bleibt in der Voreinstellung auf zehn Prozent des Dateisystems begrenzt, höchstens jedoch auf vier Gibibyte. Gelesen wird das Journal mit journalctl, ein zusätzlich installierter rsyslog schreibt parallel die gewohnten Textdateien.
/usr, /opt und die Zusammenführung von /bin und /usr/bin
Früher trennte Linux die überlebenswichtigen Programme in /bin und /sbin von allen übrigen. Diese übrigen Werkzeuge lagen in /usr/bin und /usr/sbin. Denn /usr konnte damals auf einer eigenen oder sogar entfernten Platte liegen. Diese Trennung ist gefallen. Debian machte den Schritt mit Version 12 im Jahr 2023 verbindlich, andere Distributionen vollzogen ihn früher. Heute verweisen /bin, /sbin und /lib als Symlinks auf ihre Gegenstücke unter /usr. Daher enthält /usr/bin die Programme sämtlicher installierter Pakete, vom kleinen Editor bis zum Serverdienst. Architekturunabhängige Beigaben wie Symbole, Handbuchseiten und Vorlagen liegen in /usr/share.
Der gesamte Ast /usr gehört dem Paketmanager. Jedes Update ersetzt dort Dateien ohne Rückfrage, eine eigene Änderung an einem Skript in /usr/bin übersteht die nächste Aktualisierung nicht. Anpassungen unterhalb von /etc bleiben erhalten. Der Paketmanager dpkg fragt bei geänderten Konfigurationsdateien nach und legt die neue Fassung als .dpkg-dist ab. RPM-Systeme schreiben dafür .rpmnew oder .rpmsave neben die bestehende Datei. Selbst kompilierte Software gehört nach /usr/local, das kein Paket anfasst. Geschlossene Fremdprogramme mit eigenem Verzeichnisbaum landen in /opt. Ergänzend stehen ihnen die Zweige /etc/opt und /var/opt zur Verfügung.
/proc, /sys, /dev und /run als Verzeichnisse ohne Datenträger
Einige Verzeichnisse belegen keinen einzigen Sektor auf der Platte. /proc ist eine Schnittstelle zum Kernel in Dateiform, bei jedem Start neu erzeugt. Für jeden laufenden Prozess existiert dort ein Verzeichnis mit seiner Prozessnummer, darin die Kommandozeile, die geöffneten Dateien und der Speicherverbrauch. /proc/cpuinfo nennt Modell und Taktrate der CPU, /proc/meminfo den freien Arbeitsspeicher, /proc/cmdline die Parameter, mit denen der Kernel gestartet wurde. Werkzeuge wie top, ps und free beziehen ihre Zahlen ausschließlich aus diesen Dateien, eigene Messungen nehmen sie nicht vor.

/sys kam mit Kernel 2.6 hinzu und bildet Geräte, Treiber und Kernelparameter ab. In /sys/class/net stehen die Netzwerkschnittstellen mit Zustand und MAC-Adresse. /sys/class/power_supply zeigt den Ladestand des Akkus. In /sys/class/backlight steht die Bildschirmhelligkeit, die ein einfacher echo-Befehl auch neu setzen kann. /dev hält die Gerätedateien bereit, der Kernel befüllt dieses Verzeichnis selbst. /run sammelt seit FHS 3.0 die Laufzeitdaten wie Prozessnummern und Sockets, und zwar im Arbeitsspeicher. Debian 13 legt auch /tmp als tmpfs in den Arbeitsspeicher. Das System räumt dort nach zehn Tagen auf, in /var/tmp erst nach dreißig Tagen.
Das Heimatverzeichnis, Punktdateien und der XDG-Standard
Persönliche Dateien liegen in /home/benutzername, der Administrator arbeitet in /root. Die Konfiguration einzelner Programme versteckt sich dort in Dateien und Ordnern. Ihr Name beginnt mit einem Punkt. Erst der Aufruf ls -a zeigt diese versteckten Einträge im Heimatverzeichnis an. Der XDG Base Directory Standard von freedesktop.org ordnet diesen Wildwuchs. Einstellungen gehören nach ~/.config, Programmdaten nach ~/.local/share, Wegwerfbares nach ~/.cache, steuerbar über die Variablen XDG_CONFIG_HOME, XDG_DATA_HOME und XDG_CACHE_HOME. Ein Backup darf ~/.cache gefahrlos auslassen und spart je nach Browser mehrere Gigabyte. Eigene Skripte eines einzelnen Nutzers gehören nach ~/.local/bin. Debian und Ubuntu nehmen dieses Verzeichnis über die mitgelieferte ~/.profile in den Suchpfad auf, sobald es existiert.
Snap und Flatpak weichen von dieser Ordnung ab. Das System hängt Snap-Pakete als schreibgeschützte SquashFS-Abbilder unter /snap ein. Jede Version bekommt ein eigenes Unterverzeichnis mit einem Symlink namens current. Veränderliche Daten stehen daneben in /var/snap und ~/snap. Flatpak installiert systemweit nach /var/lib/flatpak und pro Nutzer nach ~/.local/share/flatpak. Die Anwendungsdaten sammelt es in ~/.var/app. Dort findet sich je Anwendung ein Ordner mit den Unterordnern config, data und cache. Innerhalb der Sandbox zeigen die XDG-Variablen auf genau diese Unterordner, weshalb ein Flatpak-Programm seine Einstellungen niemals in ~/.config sucht.
Fazit zum Verzeichnisbaum unter Linux
