Linux-Dateisystem

Aus Xinux Wiki
Version vom 16. Oktober 2026, 10:24 Uhr von Thomas.will (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Linux-Dateisystem

Verzeichnisbaum

Linux besitzt ein hierarchisches Dateisystem. Es besteht aus:

  • Dateien (Files)
  • Verzeichnissen (Directories)

Ein Verzeichnis kann Dateien und Unterverzeichnisse (Subdirectories) enthalten. Das oberste Verzeichnis heißt Rootverzeichnis (kurz Root) und wird durch / gekennzeichnet.

Im Gegensatz zu Windows kennt Linux keine Laufwerksbuchstaben.

Jeder Datenträger wird an einer Stelle des einen Verzeichnisbaums eingehängt (gemountet), z. B. eine zweite Festplatte unter /srv/daten oder ein USB-Stick unter /media/thomas/stick (Debian/Ubuntu) bzw. /run/media/thomas/stick (Rocky/RHEL/Fedora).

Eingehängte Dateisysteme anzeigen
  • findmnt
  • df -hT
  • lsblk -f

Die Struktur ist im Filesystem Hierarchy Standard (FHS 3.0) beschrieben.

Dokumentation auf dem System
  • man 7 hier
  • man 7 file-hierarchy

Wichtige Verzeichnisse

Homeverzeichnis

  • Das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet
  • Wird vom Systemverwalter eingerichtet
  • Jeder Anwender besitzt ein festes Homeverzeichnis, z. B. /home/hans
  • Der Benutzer root hat sein Homeverzeichnis unter /root
Beispiel
/home/thomas

~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis

Eigenes Homeverzeichnis
  • echo $HOME
  • cd ~
  • cd
Homeverzeichnis eines anderen Benutzers
  • cd ~hans

Aktuelles Verzeichnis

  • Das Verzeichnis, in dem man sich aktuell befindet
  • Wird mit dem Befehl cd (change directory) verändert
  • Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis
Anzeigen und zurückwechseln
  • pwd
  • cd -

Elternverzeichnis

  • Das Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses
  • Jedes Verzeichnis besitzt genau ein Elternverzeichnis
  • Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen Verzeichnis)
  • Sonderfall: Das Elternverzeichnis von / ist / selbst
Ausprobieren
  • cd /..
  • pwd

Pfadnamen

Absoluter Pfadname

  • Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur Zieldatei
  • Beginnt immer mit /
  • Gilt unabhängig vom aktuellen Verzeichnis
Beispiel
/usr/local/bin

Relativer Pfadname

  • Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Ziel
  • Beginnt nicht mit /
Beispiel
aus /usr/share heraus nach /usr/local/bin
cd /usr/share
cd ../local/bin
Relativen Pfad auflösen
  • realpath ../local/bin

Verzeichnisstruktur

Verzeichnis Inhalt
/bin Symlink auf /usr/bin
/sbin Symlink auf /usr/sbin
/lib, /lib64 Symlinks auf /usr/lib bzw. /usr/lib64
/boot Kernel, initramfs und Dateien des Bootmanagers
/dev Gerätedateien (Devices), vom Kernel angelegt (devtmpfs), von udev verwaltet
/etc Konfigurationsdateien des Systems (keine Binärprogramme)
/home Heimatverzeichnisse der Benutzer
/media Mountpunkte für Wechselmedien, automatisch verwaltet (Rocky/RHEL: /run/media)
/mnt Mountpunkt für von Hand eingehängte Dateisysteme
/opt Software, die nicht zum Installationsumfang der Distribution gehört
/proc Virtuelles Dateisystem: Prozesse und Kernelparameter
/root Heimatverzeichnis des Administrators
/run Laufzeitdaten seit dem Systemstart (tmpfs)
/srv Daten der von diesem System bereitgestellten Dienste (z. B. Web, FTP)
/sys Virtuelles Dateisystem mit Kernel- und Geräteinformationen (SysFS)
/tmp Temporäre Dateien
/usr Statische Dateien, kann read-only gemountet sein
/var Variable Dateien, muss beschreibbar sein

Alle vom Paketmanager verwalteten Programme und Bibliotheken liegen unterhalb von /usr. /bin, /sbin, /lib und /lib64 sind Symlinks dorthin.

Prüfen
  • ls -ld /bin /sbin /lib /lib64
lrwxrwxrwx 1 root root 7 /bin -> usr/bin
lrwxrwxrwx 1 root root 7 /lib -> usr/lib
lrwxrwxrwx 1 root root 9 /lib64 -> usr/lib64
lrwxrwxrwx 1 root root 8 /sbin -> usr/sbin
Dasselbe Programm über zwei Wege
  • type -a ls
ls is /usr/bin/ls
ls is /bin/ls

Unterverzeichnisse von /usr

Verzeichnis Inhalt
bin Programme für alle Benutzer
sbin Programme für den Administrator
lib Bibliotheken, Kernelmodule, Unitdateien der Distribution
lib64 Architekturabhängige Bibliotheken (RHEL/Rocky/SUSE)
libexec Hilfsprogramme, die nur von anderen Programmen aufgerufen werden
include Header-Dateien für C-Programme
local Selbst installierte Software, vom Paketmanager unangetastet
share Architekturunabhängige Daten: Doku, Manpages, Icons, Zeitzonen
src Quelltexte (Kernel, DKMS-Module)

Bei Debian und Ubuntu liegen die architekturabhängigen Bibliotheken unter /usr/lib/x86_64-linux-gnu (Multiarch).

/usr/local ist wie /usr aufgebaut (bin, sbin, lib, share, etc) und ist der Ort für eigene Skripte und selbst kompilierte Programme.

Unterverzeichnisse von /var

Verzeichnis Inhalt
log Logdateien (wichtiges Verzeichnis für Administratoren)
log/journal Persistentes Journal von systemd-journald (nur wenn persistente Speicherung aktiv ist)
lib Statusdaten von Diensten, z. B. Datenbanken, Paketverwaltung
cache Zwischenspeicher für Programme, jederzeit löschbar
spool Warteschlangen, z. B. Drucksystem, Cron, Mail
mail Postfächer der Benutzer
tmp Temporäre Dateien, die einen Reboot überdauern
opt Veränderliche Daten der Software aus /opt
www Daten des Webservers
run Symlink auf /run
lock Symlink auf /run/lock

PID- und Sperrdateien liegen unter /run, weil sie bereits gebraucht werden, bevor /var eingehängt ist.

Weitere Verzeichnisse

Verzeichnis Inhalt
/efi bzw. /boot/efi EFI System Partition (FAT32) bei UEFI-Systemen
/snap Einhängepunkte der Snap-Pakete (Ubuntu)
/var/lib/flatpak Systemweit installierte Flatpaks
/var/lib/docker, /var/lib/containers Images und Container von Docker bzw. Podman

Konfiguration: /usr/lib, /run und /etc

Konfiguration gibt es an drei Stellen. Bei gleichnamigen Dateien gewinnt die höhere Stufe:

Stufe Ort Zuständig
1 /usr/lib/... Vorgabe der Distribution bzw. des Pakets
2 /run/... Zur Laufzeit erzeugt, verschwindet beim Reboot
3 /etc/... Administrator

Der Administrator hat also immer das letzte Wort.

Beispiele
  • /usr/lib/systemd/system/ssh.service gegenüber /etc/systemd/system/ssh.service
  • /usr/lib/tmpfiles.d/ gegenüber /etc/tmpfiles.d/
  • /usr/lib/sysctl.d/ gegenüber /etc/sysctl.d/

Der SSH-Dienst heißt bei Debian/Ubuntu ssh.service, bei Rocky/RHEL sshd.service.

Wirksame Konfiguration anzeigen
  • systemctl cat ssh.service
  • systemd-analyze cat-config tmpfiles.d

Dateien unter /usr/lib werden nicht bearbeitet. Änderungen gehören nach /etc, entweder als gleichnamige Datei oder als Drop-in im Verzeichnis /etc/systemd/system/NAME.service.d/.

Praxis

Verzeichnisbaum bis zur zweiten Ebene anzeigen (tree ggf. nachinstallieren)
  • tree -L 2 -d /
  • ls -l /
Belegung ermitteln (als root, sonst fehlen Verzeichnisse)
  • du -sh /var/* 2>/dev/null
  • du -sh /usr/* 2>/dev/null
Zu welchem Paket gehört eine Datei?
  • dpkg -S /usr/bin/ls
  • rpm -qf /usr/bin/ls

Bei Debian 12 sind viele Pakete noch unter dem alten Pfad registriert, dort hilft dpkg -S /bin/ls.

Wo liegt ein Kommando?
  • type -a ls
  • echo $PATH

Quiz

Quiz