/home ist der Pfad, unter dem alle regulären Benutzer ihre persönlichen Verzeichnisse bekommen — typisch /home/<username>. Hier landen Dokumente, Downloads, Konfiguration als Dotfiles (.bashrc, .config/, .ssh/) und alle anderen nutzerbezogenen Daten. /home ist neben /etc und /var einer der drei Pfade, die in jedem Backup-Plan stehen sollten — und der einzige Bereich, wo eine separate Partition so sehr empfohlen wird, dass sie auf vielen Distributionen Standard ist.

Was ist /home?

Der FHS-Standard (3.0, Kapitel 3.10) definiert /home als den zentralen Sammelpfad für Benutzer-Heimverzeichnisse. Pro regulärem User gibt es ein Unterverzeichnis, das diesem alleinig gehört und in dem er beliebig schreiben darf — alles, was zu seiner Person gehört, lebt dort.

Was du in einem Home-Verzeichnis typisch findest:

InhaltBeispiel
Klassische Daten-OrdnerDocuments/, Downloads/, Music/, Pictures/, Videos/
Dotfiles (Shell- und App-Konfiguration).bashrc, .zshrc, .gitconfig, .vimrc, .tmux.conf
XDG-Konfigurations-Verzeichnis.config/ — moderne App-Settings (siehe unten)
XDG-Cache.cache/ — temporäre App-Daten, wiederherstellbar
XDG-Lokal-State.local/share/, .local/state/
SSH-Schlüssel.ssh/id_*, .ssh/known_hosts, .ssh/config
GnuPG-Schlüssel.gnupg/
Mail-Verzeichnisse.thunderbird/, Mail/, Maildir/
Browser-Profile.mozilla/, .config/google-chrome/

Die Größe eines Home-Verzeichnisses variiert stark — auf Servern oft nur wenige MB (vor allem Konfiguration), auf Desktop-Systemen mit Browser-Caches, Steam-Library oder Projektordnern leicht hunderte GB.

Bash Was steckt in meinem Home?
# Top-Level-Übersicht inkl. versteckter Dateien
ls -la ~

# Größte Unterordner (Cache und Daten ausgeblendet ist sinnvoll)
du -sh ~/* 2>/dev/null | sort -hr | head -10

# Auch Dotfiles berücksichtigen
du -sh ~/.* 2>/dev/null | sort -hr | head -10

Berechtigungen und Zugriff

Standardmäßig hat ein Home-Verzeichnis die Berechtigung 0750 oder 0755, mit Owner und Group auf den Nutzer und seine Primärgruppe gesetzt. useradd -m legt das Verzeichnis automatisch mit den richtigen Rechten an, indem es den Inhalt aus /etc/skel/ kopiert.

BerechtigungWer sieht was?
0700Nur der Owner — fremde User können nicht mal ls aufrufen
0750Owner schreibt, Gruppe liest — Standard auf vielen Distributionen
0755Owner schreibt, alle anderen können lesen/durchsuchen

Die Default-Berechtigung wird durch zwei Faktoren bestimmt:

  1. HOME_MODE in /etc/login.defs (z. B. HOME_MODE 0700 oder 0750).
  2. Die umask zum Zeitpunkt der User-Anlage.
Bash Berechtigungen prüfen und anpassen
# Eigene Berechtigung anschauen
ls -ld ~
# drwxr-x--- 24 michael michael 4096 ... /home/michael

# Auf privat (nur ich) umstellen
chmod 700 ~

# Default für neue Nutzer: HOME_MODE in /etc/login.defs setzen
sudo grep HOME_MODE /etc/login.defs
# HOME_MODE 0750

Sensibel und gesondert geschützt: das .ssh-Verzeichnis. SSH verweigert die Anmeldung, wenn die Berechtigungen zu offen sind:

Bash SSH-Berechtigungen — Pflicht
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_*           # private Schlüssel
chmod 644 ~/.ssh/id_*.pub        # public Schlüssel
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/known_hosts
chmod 644 ~/.ssh/config

XDG Base Directory Specification

Historisch lag App-Konfiguration als Wildwuchs aus Dotfiles direkt im Home-Verzeichnis (~/.bashrc, ~/.vimrc, ~/.firefox-config, ~/.skype-data). Das wurde unhandlich — deshalb hat die Free Desktop Foundation die XDG Base Directory Specification definiert, an die sich heute die meisten Linux-Anwendungen halten.

XDG legt vier Standard-Pfade fest:

XDG-VariableDefault-PfadInhalt
$XDG_CONFIG_HOME~/.config/Anwendungs-Konfiguration
$XDG_DATA_HOME~/.local/share/Anwendungs-Daten (z. B. Spielstände, Vorlagen)
$XDG_STATE_HOME~/.local/state/Persistenter Zustand (Logs, History — nicht zu cachen, nicht zu sichern)
$XDG_CACHE_HOME~/.cache/Wiederherstellbare Caches (kann ohne Verlust gelöscht werden)
$XDG_RUNTIME_DIR/run/user/<uid>/Laufzeit-State, beim Logout entfernt

Anwendungen, die XDG sauber unterstützen, lesen ihre Konfiguration aus ~/.config/<appname>/. Beispiele:

  • ~/.config/git/config — git-Konfiguration (alternativ zu ~/.gitconfig)
  • ~/.config/nvim/init.vim — neovim
  • ~/.config/htop/htoprc — htop
  • ~/.config/systemd/user/ — User-Services in systemd

Vorteile: gemeinsamer Backup-Pfad (~/.config/), klare Trennung zwischen Cache (entfernbar) und State (wichtig), und konsistente Über-Steuerung via Environment-Variablen.

Bash XDG-Pfade nutzen
# Aktuelle XDG-Werte anzeigen
echo "$XDG_CONFIG_HOME"
# leer = Default ~/.config

# Eigene App-Daten beim Sichern fokussieren
tar czf homeconfig.tar.gz \
    -C ~ .config .local/share \
    --exclude='.cache' \
    --exclude='.local/share/Trash'

Dotfiles und Versionskontrolle

Die persönliche Konfiguration lebt in Dotfiles (.bashrc, .vimrc, .gitconfig, .ssh/config, …). Sie machen ein Linux-System produktiv — und wandern ständig zwischen Maschinen mit. Deshalb hat sich das Pattern etabliert, sie in einem Git-Repo zu verwalten.

Drei verbreitete Ansätze:

MethodeKurzbeschreibung
Symlink-StowRepo unter ~/dotfiles/, Tools wie GNU Stow erzeugen Symlinks im Home
Bare Git RepoGit-Repo ohne Working Tree, das Home selbst ist die Working Copy
Frameworkschezmoi, yadm, dotbot — vorgebackene Dotfile-Manager

Das Bare-Repo-Pattern ist besonders elegant, weil es ohne Symlinks auskommt:

Bash Bare Git Repo für Dotfiles aufsetzen
# Initial-Setup
git init --bare $HOME/.dotfiles
alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles --work-tree=$HOME'
dotfiles config --local status.showUntrackedFiles no

# Datei tracken und committen
dotfiles add .bashrc .gitconfig .config/nvim/init.vim
dotfiles commit -m "initial dotfiles"
dotfiles remote add origin git@github.com:user/dotfiles.git
dotfiles push -u origin main

# Auf neuer Maschine einspielen
git clone --bare git@github.com:user/dotfiles.git $HOME/.dotfiles
alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles --work-tree=$HOME'
dotfiles checkout

Eigene Partition für /home

Eine separate /home-Partition (oder LVM-Volume) ist eine der häufigsten Layout-Entscheidungen bei Linux-Installationen — und meist die richtige.

Vorteile:

  • System-Reinstallation ohne Datenverlust. Beim nächsten Distribution-Wechsel oder Major-Upgrade kannst du / neu aufsetzen, /home bleibt unangetastet.
  • Quotas pro User möglich. Mit quota oder Filesystem-Features (Btrfs, XFS) lassen sich pro User Speicher-Limits setzen.
  • Unterschiedliche Filesystem-Optionen. / mit konservativen Defaults, /home mit noexec (Sicherheit), nodev, nosuid.
  • Encryption granular. Nur das User-Verzeichnis verschlüsseln, ohne das ganze System dem LUKS-Key auszusetzen (LUKS auf dem /home-Volume).

Trade-off: bei zu kleiner /home-Partition läuft sie früher voll als das gesamte System. LVM löst das, weil sich die Volume-Größe online erweitern lässt.

Bash Eigene /home-Partition prüfen und nutzen
# Hat /home eine eigene Mountpoint?
df -h /home
# Filesystem      Size  Used Avail Use% Mounted on
# /dev/nvme0n1p3  500G   80G  395G  17% /home

# In der fstab nachschauen, was beim Boot gemountet wird
grep '/home' /etc/fstab

# Mount-Optionen prüfen (z. B. nodev,nosuid,noexec wären restriktiv)
mount | grep '/home'

Backup und Verschlüsselung

/home ist der wichtigste Backup-Pfad auf einem Endbenutzer-System. Die Strategie sollte zwei Aspekte abdecken:

Backup-Ziele:

  • Eigene Daten: Dokumente, Bilder, Videos, Code-Projekte, Mails, Konfiguration.
  • Verzichtbar (excluden): Caches (.cache/, .mozilla/.../Cache/), npm-Module (node_modules/), Build-Output, Trash, virtuelle Maschinen-Images, Steam-Bibliothek (re-installierbar), Snapshots vom Backup-Tool selbst.
Bash Vernünftige Backup-Strategie mit rsync
rsync -aHAX --delete \
    --exclude='.cache' \
    --exclude='.local/share/Trash' \
    --exclude='node_modules' \
    --exclude='.mozilla/firefox/*/Cache*' \
    --exclude='.config/google-chrome/*/Cache*' \
    --exclude='*.iso' \
    ~/ /mnt/backup/home-michael/

Bessere Tools für dauerhaftes, dedupliziertes Backup: restic, borgbackup, kopia. Alle drei können /home performant und mit Verschlüsselung gegen externe Targets (S3, Backblaze, lokale Disks) sichern.

Verschlüsselung:

Auf modernen Distributionen ist die übliche Wahl vollständige Disk-Verschlüsselung mit LUKS — der gesamte Storage (also auch /home) wird beim Boot entschlüsselt. Alternativ:

  • Per-User-Encryption mit fscrypt (Ext4, F2FS): jeder User hat seinen eigenen Schlüssel, andere können seine Dateien nicht mal als Bytes lesen.
  • eCryptfs (deprecated) — historisch von Ubuntu für „Home-Encryption per User" genutzt, heute nicht mehr empfohlen.
  • systemd-homed — modernerer Ansatz: das Home-Verzeichnis ist ein verschlüsseltes LUKS-Image, das beim Login eingehängt wird. Erfordert systemd ≥ 245 und Distributionen-Support.

Abgrenzung: /root, Service-Accounts und mehrere /home

/home ist nicht der Pfad für root oder System-Service-User:

Account-TypHome-Pfad
Regulärer Nutzer/home/<username>
Root (Superuser)/root
System-Daemons (httpd, nginx, postgres, …)/var/lib/<service> oder /nonexistent
Mail-User/var/spool/mail/<user> (klassisch)

Der Grund für /root außerhalb von /home: bei einer defekten oder nicht mountbaren /home-Partition muss root sich trotzdem einloggen können, um zu reparieren. Wäre /root unter /home, wäre genau das nicht möglich.

In großen Umgebungen mit vielen Nutzern wird /home oft per NFS oder anderen Netzwerk-Filesystemen gemountet — der Home-Inhalt eines Nutzers folgt ihm dann auf jede Maschine im Netzwerk. Das ist der klassische Unix-Workgroup-Setup, in modernen Cloud-Umgebungen seltener geworden.

Interessantes

/etc/skel ist die Vorlage für jedes neue Home

Beim Anlegen eines neuen Users mit useradd -m (oder adduser) wird der gesamte Inhalt von /etc/skel/ ins neue Home kopiert. Wer einheitliche Defaults für alle neuen Nutzer setzen will (Beispiel-.bashrc, Standard-Ordner), tut das hier — nicht nachträglich pro User.

Cache-Ordner sind eine separate Welt

~/.cache/ und ähnliche App-Caches (~/.mozilla/firefox/<profile>/Cache2/, ~/.npm/) können sehr groß werden — leicht 10–20 GB auf einem aktiven Entwickler-System. In Backups gehören sie nicht (per Definition wiederherstellbar), aber regelmäßig manuell aufzuräumen lohnt sich auch.

systemd-homed ist die Zukunft, aber selten Default

systemd-homed verschiebt das User-Home in eine LUKS-verschlüsselte Image-Datei, die beim Login automatisch gemountet und beim Logout entlassen wird. Vorteile: portable Homes, vollständig verschlüsselt, automatisches Resize. Nachteil: noch wenig verbreitet, manche Tools haben Probleme mit dem dynamischen Mount.

$HOME ≠ /home/$USER — auf Edge-Cases achten

Skripte sollten immer $HOME (oder ~) verwenden, nicht /home/$USER hartkodieren. Auf Systemen mit NFS-Homes, custom Layouts (z. B. /users/<name> auf manchen Universitäts-Servern) oder root (Home in /root) bricht der hartkodierte Pfad. getent passwd <user> | cut -d: -f6 liefert das echte Home aus der User-Datenbank.

Quotas können /home schützen, sind aber Aufwand

In Multi-User-Umgebungen kann ein einzelner User mit unbegrenztem Home das gesamte Filesystem füllen und alle anderen blockieren. Disk-Quotas lösen das: pro User wird ein Soft- und Hard-Limit gesetzt. Auf Btrfs/ZFS gibt es Subvolume-Quotas, auf Ext4/XFS klassische User-Quotas via quota-Paket.

NFS-Homes brauchen Locking-Support

Wer /home per NFS mountet, muss aufpassen: viele Programme legen Lock-Files an (.bash_history.lock, Browser-Profile, Sqlite-Datenbanken). Ohne funktionierendes File-Locking auf NFS gibt es subtile Korruptionen. NFSv4 mit aktivem nfslock löst das, aber lohnt einen Test vor produktivem Einsatz.

Weiterführende Ressourcen

Externe Quellen

/ Weiter

Zurück zu Verzeichnisstruktur

Zur Übersicht