Linux-Dateisystem: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
Zeile 3: Zeile 3:
 
== Verzeichnisbaum ==
 
== Verzeichnisbaum ==
  
<!-- Vorhandene Baumgrafik hier stehen lassen -->
+
{{#drawio:fhs}}
  
 
Linux besitzt ein hierarchisches Dateisystem. Es besteht aus:
 
Linux besitzt ein hierarchisches Dateisystem. Es besteht aus:

Aktuelle Version vom 24. August 2026, 10:33 Uhr

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. ein USB-Stick unter /media/thomas/stick oder eine zweite Festplatte unter /srv/daten.

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 außer / besitzt genau ein Elternverzeichnis
  • Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen Verzeichnis)

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
../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), von udev zur Laufzeit erzeugt
/etc Konfigurationsdateien des Systems (keine Binärprogramme)
/home Heimatverzeichnisse der Benutzer
/media Mountpunkte für Wechselmedien, automatisch verwaltet
/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 8 /sbin -> usr/sbin

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
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 (Debian/Ubuntu)
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, /etc und /run

Konfiguration gibt es an drei Stellen. Die höhere Stufe gewinnt:

Stufe Ort Zuständig
1 /usr/lib/… Vorgabe der Distribution bzw. des Pakets
2 /etc/… Administrator
3 /run/… Zur Laufzeit erzeugt
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/
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 …service.d/.

Praxis

Verzeichnisbaum bis zur zweiten Ebene anzeigen
  • tree -L 2 -d /
  • ls -l /
Belegung ermitteln
  • 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
Wo liegt ein Kommando?
  • type -a ls
  • echo $PATH

Quiz

Quiz