Linux-Dateisystem: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(13 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
−
=Verzeichnisbaum=
+
= Linux-Dateisystem =
−
[[Image:vztree.jpg]]
+
 
−
*Das Betriebssystem UNIX besitzt ein hierarchisches Dateisystem. Es besteht aus:
+
== Verzeichnisbaum ==
−
*Dateien (Files)
+
 
−
*Verzeichnissen (Directories)
+
{{#drawio:fhs}}
−
**Ein Verzeichnis kann Dateien und Unterverzeichnisse (Subdirectories) enthalten.
+
 
−
**Das oberste Verzeichnis im Dateisystem heisst
+
Linux besitzt ein hierarchisches Dateisystem. Es besteht aus:
−
*Rootverzeichnis oder kurz Root und wird durch / gekennzeichnet.
+
 
−
;Im Gegensatz zu Windows kennt UNIX keine Laufwerke.
+
* Dateien (Files)
−
*Das obige Bild zeigt ein typisches UNIX-Dateisystem.
+
* Verzeichnissen (Directories)
−
*Unterhalb des Rootverzeichnisses befinden sich eine Vielzahl vonVerzeichnissen.
+
 
−
=Wichtige Verzeichnisse=
+
Ein Verzeichnis kann Dateien und Unterverzeichnisse (Subdirectories) enthalten.
−
==Homeverzeichnis==
+
Das oberste Verzeichnis heißt Rootverzeichnis (kurz Root) und wird durch <code>/</code> gekennzeichnet.
−
*Das Verzeichnis, in dem man sich unmittelbar nach dem Anmelden befindet.
+
 
−
*Das Homeverzeichnis wird vom Systemverwalter eingerichtet
+
'''Im Gegensatz zu Windows kennt Linux keine Laufwerksbuchstaben.'''
−
*jeder Anwender besitzt ein festes Homeverzeichnis. z.B. /home/hans
+
 
−
==~ (Tilde) bzw. $HOME (Shellvariable) kennzeichnen das Homeverzeichnis==
+
Jeder Datenträger wird an einer Stelle des einen Verzeichnisbaums eingehängt (gemountet), z. B. eine zweite Festplatte unter <code>/srv/daten</code> oder ein USB-Stick unter <code>/media/thomas/stick</code> (Debian/Ubuntu) bzw. <code>/run/media/thomas/stick</code> (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. <code>/home/hans</code>
 +
* Der Benutzer <code>root</code> hat sein Homeverzeichnis unter <code>/root</code>
 +
 
 +
;Beispiel
 +
<syntaxhighlight lang="bash">
 +
/home/thomas
 +
</syntaxhighlight>
 +
 
 +
=== ~ (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 <code>cd</code> (change directory) verändert
 +
* Ein einfacher Punkt <code>.</code> 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 <code>..</code> kennzeichnen das Elternverzeichnis (abhängig vom aktuellen Verzeichnis)
 +
* Sonderfall: Das Elternverzeichnis von <code>/</code> ist <code>/</code> selbst
 +
 
 +
;Ausprobieren
 +
* cd /..
 +
* pwd
 +
 
 +
== Pfadnamen ==
 +
 
 +
=== Absoluter Pfadname ===
 +
 
 +
* Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur Zieldatei
 +
* Beginnt immer mit <code>/</code>
 +
* Gilt unabhängig vom aktuellen Verzeichnis
 +
 
 
;Beispiel
 
;Beispiel
−
*/home/thomas
+
<syntaxhighlight lang="bash">
−
==Aktuelles Verzeichnis==
+
/usr/local/bin
−
*Verzeichnis, in dem man sich aktuell befindet.
+
</syntaxhighlight>
−
*Das aktuelle Verzeichnis wird mit dem Befehl cd (change directory)verändert.
+
 
−
*Ein einfacher Punkt . kennzeichnet das aktuelle Verzeichnis.
+
=== Relativer Pfadname ===
−
==Elternverzeichnis==
+
 
 +
* Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Ziel
 +
* Beginnt nicht mit <code>/</code>
 +
 
 +
;Beispiel: aus <code>/usr/share</code> heraus nach <code>/usr/local/bin</code>
 +
<syntaxhighlight lang="bash">
 +
cd /usr/share
 +
cd ../local/bin
 +
</syntaxhighlight>
 +
 
 +
;Relativen Pfad auflösen
 +
* realpath ../local/bin
 +
 
 +
== Verzeichnisstruktur ==
 +
 
 +
{| class="wikitable"
 +
! Verzeichnis !! Inhalt
 +
|-
 +
| <code>/bin</code> || Symlink auf <code>/usr/bin</code>
 +
|-
 +
| <code>/sbin</code> || Symlink auf <code>/usr/sbin</code>
 +
|-
 +
| <code>/lib</code>, <code>/lib64</code> || Symlinks auf <code>/usr/lib</code> bzw. <code>/usr/lib64</code>
 +
|-
 +
| <code>/boot</code> || Kernel, initramfs und Dateien des Bootmanagers
 +
|-
 +
| <code>/dev</code> || Gerätedateien (Devices), vom Kernel angelegt (devtmpfs), von <code>udev</code> verwaltet
 +
|-
 +
| <code>/etc</code> || Konfigurationsdateien des Systems (keine Binärprogramme)
 +
|-
 +
| <code>/home</code> || Heimatverzeichnisse der Benutzer
 +
|-
 +
| <code>/media</code> || Mountpunkte für Wechselmedien, automatisch verwaltet (Rocky/RHEL: <code>/run/media</code>)
 +
|-
 +
| <code>/mnt</code> || Mountpunkt für von Hand eingehängte Dateisysteme
 +
|-
 +
| <code>/opt</code> || Software, die nicht zum Installationsumfang der Distribution gehört
 +
|-
 +
| <code>/proc</code> || Virtuelles Dateisystem: Prozesse und Kernelparameter
 +
|-
 +
| <code>/root</code> || Heimatverzeichnis des Administrators
 +
|-
 +
| <code>/run</code> || Laufzeitdaten seit dem Systemstart (tmpfs)
 +
|-
 +
| <code>/srv</code> || Daten der von diesem System bereitgestellten Dienste (z. B. Web, FTP)
 +
|-
 +
| <code>/sys</code> || Virtuelles Dateisystem mit Kernel- und Geräteinformationen (SysFS)
 +
|-
 +
| <code>/tmp</code> || Temporäre Dateien
 +
|-
 +
| <code>/usr</code> || Statische Dateien, kann read-only gemountet sein
 +
|-
 +
| <code>/var</code> || Variable Dateien, muss beschreibbar sein
 +
|}
 +
 
 +
Alle vom Paketmanager verwalteten Programme und Bibliotheken liegen unterhalb von <code>/usr</code>. <code>/bin</code>, <code>/sbin</code>, <code>/lib</code> und <code>/lib64</code> sind Symlinks dorthin.
 +
 
 +
;Prüfen
 +
* ls -ld /bin /sbin /lib /lib64
 +
 
 +
<pre>
 +
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
 +
</pre>
 +
 
 +
;Dasselbe Programm über zwei Wege
 +
* type -a ls
 +
 
 +
<pre>
 +
ls is /usr/bin/ls
 +
ls is /bin/ls
 +
</pre>
 +
 
 +
=== Unterverzeichnisse von /usr ===
 +
 
 +
{| class="wikitable"
 +
! Verzeichnis !! Inhalt
 +
|-
 +
| <code>bin</code> || Programme für alle Benutzer
 +
|-
 +
| <code>sbin</code> || Programme für den Administrator
 +
|-
 +
| <code>lib</code> || Bibliotheken, Kernelmodule, Unitdateien der Distribution
 +
|-
 +
| <code>lib64</code> || Architekturabhängige Bibliotheken (RHEL/Rocky/SUSE)
 +
|-
 +
| <code>libexec</code> || Hilfsprogramme, die nur von anderen Programmen aufgerufen werden
 +
|-
 +
| <code>include</code> || Header-Dateien für C-Programme
 +
|-
 +
| <code>local</code> || Selbst installierte Software, vom Paketmanager unangetastet
 +
|-
 +
| <code>share</code> || Architekturunabhängige Daten: Doku, Manpages, Icons, Zeitzonen
 +
|-
 +
| <code>src</code> || Quelltexte (Kernel, DKMS-Module)
 +
|}
 +
 
 +
Bei Debian und Ubuntu liegen die architekturabhängigen Bibliotheken unter <code>/usr/lib/x86_64-linux-gnu</code> (Multiarch).
 +
 
 +
<code>/usr/local</code> ist wie <code>/usr</code> aufgebaut (<code>bin</code>, <code>sbin</code>, <code>lib</code>, <code>share</code>, <code>etc</code>) und ist der Ort für eigene Skripte und selbst kompilierte Programme.
 +
 
 +
=== Unterverzeichnisse von /var ===
 +
 
 +
{| class="wikitable"
 +
! Verzeichnis !! Inhalt
 +
|-
 +
| <code>log</code> || Logdateien (wichtiges Verzeichnis für Administratoren)
 +
|-
 +
| <code>log/journal</code> || Persistentes Journal von systemd-journald (nur wenn persistente Speicherung aktiv ist)
 +
|-
 +
| <code>lib</code> || Statusdaten von Diensten, z. B. Datenbanken, Paketverwaltung
 +
|-
 +
| <code>cache</code> || Zwischenspeicher für Programme, jederzeit löschbar
 +
|-
 +
| <code>spool</code> || Warteschlangen, z. B. Drucksystem, Cron, Mail
 +
|-
 +
| <code>mail</code> || Postfächer der Benutzer
 +
|-
 +
| <code>tmp</code> || Temporäre Dateien, die einen Reboot überdauern
 +
|-
 +
| <code>opt</code> || Veränderliche Daten der Software aus <code>/opt</code>
 +
|-
 +
| <code>www</code> || Daten des Webservers
 +
|-
 +
| <code>run</code> || Symlink auf <code>/run</code>
 +
|-
 +
| <code>lock</code> || Symlink auf <code>/run/lock</code>
 +
|}
 +
 
 +
PID- und Sperrdateien liegen unter <code>/run</code>, weil sie bereits gebraucht werden, bevor <code>/var</code> eingehängt ist.
 +
 
 +
=== Weitere Verzeichnisse ===
 +
 
 +
{| class="wikitable"
 +
! Verzeichnis !! Inhalt
 +
|-
 +
| <code>/efi</code> bzw. <code>/boot/efi</code> || EFI System Partition (FAT32) bei UEFI-Systemen
 +
|-
 +
| <code>/snap</code> || Einhängepunkte der Snap-Pakete (Ubuntu)
 +
|-
 +
| <code>/var/lib/flatpak</code> || Systemweit installierte Flatpaks
 +
|-
 +
| <code>/var/lib/docker</code>, <code>/var/lib/containers</code> || 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:
 +
 
 +
{| class="wikitable"
 +
! Stufe !! Ort !! Zuständig
 +
|-
 +
| 1 || <code>/usr/lib/...</code> || Vorgabe der Distribution bzw. des Pakets
 +
|-
 +
| 2 || <code>/run/...</code> || Zur Laufzeit erzeugt, verschwindet beim Reboot
 +
|-
 +
| 3 || <code>/etc/...</code> || Administrator
 +
|}
 +
 
 +
Der Administrator hat also immer das letzte Wort.
  
−
Verzeichnis unmittelbar oberhalb des aktuellen Verzeichnisses.
+
;Beispiele
−
Jedes Verzeichnis ausser / besitzt genau ein Elternverzeichnis.
+
* /usr/lib/systemd/system/ssh.service gegenüber /etc/systemd/system/ssh.service
−
Zwei Punkte .. kennzeichnen das Elternverzeichnis (abhängig vom aktuellen
+
* /usr/lib/tmpfiles.d/ gegenüber /etc/tmpfiles.d/
−
VZ).
+
* /usr/lib/sysctl.d/ gegenüber /etc/sysctl.d/
  
−
===Absoluter Pfadname:===
+
Der SSH-Dienst heißt bei Debian/Ubuntu <code>ssh.service</code>, bei Rocky/RHEL <code>sshd.service</code>.
  
−
Beschreibt ausgehend vom Rootverzeichnis den Weg zum Zielverzeichnis oder zur
+
;Wirksame Konfiguration anzeigen
−
Zieldatei. (Welche Verzeichnisse müssen ausgehend von / durchlaufen werden, um
+
* systemctl cat ssh.service
−
zum Ziel zu kommen?) Ein absoluter Pfadname beginnt immer mit / .
+
* systemd-analyze cat-config tmpfiles.d
  
−
===Relativer Pfadname:===
+
Dateien unter <code>/usr/lib</code> werden nicht bearbeitet. Änderungen gehören nach <code>/etc</code>, entweder als gleichnamige Datei oder als Drop-in im Verzeichnis <code>/etc/systemd/system/NAME.service.d/</code>.
  
−
Beschreibt ausgehend vom aktuellen Verzeichnis den Weg zum Zielverzeichnis
+
== Praxis ==
−
oder zur Zieldatei; ein relativer Pfadname beginnt nicht mit / .
 
−
/home/suxer
 
−
absoluter Pfadname für das Verzeichnis sub1 im Homeverzeichnis von suxer
 
  
−
===Verzeichnisstruktur===
+
;Verzeichnisbaum bis zur zweiten Ebene anzeigen (tree ggf. nachinstallieren)
 +
* tree -L 2 -d /
 +
* ls -l /
  
−
/bin        Kommandos die beim starten benötigt werden (Zugriff hat jeder)
+
;Belegung ermitteln (als root, sonst fehlen Verzeichnisse)
−
/sbin        Wichtige System-Programme (In der Regel root vorberhalten)
+
* du -sh /var/* 2>/dev/null
−
/boot        Hier findet man die Dateien des Bootmanagers und des Kernel.
+
* du -sh /usr/* 2>/dev/null
−
/dev         In diesem Verzeichnis stehen die Gerätedateien (Devices),
 
−
/home        Alle Heimatverzeichnisse der Nutzer findet man hier.
 
−
/lib        Beim Systemstart benötigten Bibliotheken und Modules stehen hier.
 
−
/mnt        Mountpunkt für temporäre Partitionen
 
−
/opt        Software, die nicht Installationsumfang von Linux gehören.
 
−
/root        Heimatverzeichnis des Administrators.
 
−
/tmp        Temporäre Dateien können hier abgelegt werden
 
−
/usr         statische Dateien (kann read-only gemountet sein)
 
−
/var        variable Dateien (muss beschreibar sein )
 
−
/etc        Konfiguartionsdateien und Startscripte
 
−
/proc        Virtuelles Dateisystem -> repräsentiert den Kernel
 
  
−
===Unterverzeichnisse von /usr===
+
;Zu welchem Paket gehört eine Datei?
 +
* dpkg -S /usr/bin/ls
 +
* rpm -qf /usr/bin/ls
  
−
sbin        Programme für root die beim Start nicht benötigt werden
+
Bei Debian 12 sind viele Pakete noch unter dem alten Pfad registriert, dort hilft <code>dpkg -S /bin/ls</code>.
−
bin          Programme für alle die beim Start nicht benötigt werden
 
−
X11R6        Dateien des X-Window-Sytems
 
−
lib          Bibliotheken und Modules die beim Start nicht benötigt werden
 
−
games        Spiele
 
−
include      Headerdateien für C-Programme
 
−
local        Pakete die nicht zur Distribution gehören ähnlich /opt
 
−
share        Pakete die von mehreren Paketen genutzt werden
 
−
share/man    Die Manualpages
 
−
share/info  Seiten des Infosystems
 
−
share/doc    Dokumentationen
 
−
src          Sources von Programmen (Kernel und andere)
 
  
−
===Unterverzeichnisse von /var===
+
;Wo liegt ein Kommando?
 +
* type -a ls
 +
* echo $PATH
  
−
cache        Zwischenspreicher für Progammes
+
== Quiz ==
−
games        Variable Daten der Games (Scores etc...)
 
−
lock        Sperrdateien
 
−
log          Die Logdateien (wichtiges Verzeichnis für Admins)
 
−
lib          zum Beispiel Daten der Datenbanken
 
−
mail        Das Mailsystem
 
−
run          Dateien zu laufemdem Prozessen
 
−
spool        Spooldateien (z.B. für das Drucksystem
 
−
state        Statusinfos
 
−
tmp          Wie /tmp eventuell nicht auf root Partion
 
  
−
=Quiz=
+
[https://forms.gle/iuHAAggrKmB8mKyH9 Quiz]
−
*[https://forms.gle/iuHAAggrKmB8mKyH9 Quiz]
 

Aktuelle Version vom 16. Oktober 2026, 10:24 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. 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