From 75ab3f713f5da610e8b6d78f0e27eaf1466fc14a Mon Sep 17 00:00:00 2001 From: Dogfather Date: Wed, 26 Aug 2026 00:34:05 +0200 Subject: [PATCH] Sicherung: Kundendaten nicht mehr fuer jedes Konto lesbar Der erste echte Lauf hat einen Mangel sichtbar gemacht, den das Skript selbst verursacht hat: root legt Dateien standardmaessig mit 644 an, also welt-lesbar. Nachgemessen als gewoehnliches Konto, ohne sudo: Die Sicherung liess sich nach /tmp kopieren und daraus Kundennamen, E-Mail-Adressen und Paketwahl auslesen; das Upload-Archiv ebenso. Auf dieser Maschine bestehen fuenf Konten. Eine Sicherung buendelt an einer Stelle, was sonst verstreut liegt -- sie muss enger geschuetzt sein als das Original, nicht lockerer. umask 077 fuer alles Neue; fuer die bereits angelegten Verzeichnisse zusaetzlich ausdruecklich 700 bzw. 600, denn umask wirkt nur auf neu Erzeugtes. Der gleiche Mangel besteht beim Original selbst (644 dogiintern) -- das kann ich nicht aendern, es gehoert nicht mir. Wird gemeldet. Co-Authored-By: Claude Opus 5 --- server-internal/sicherung.sh | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/server-internal/sicherung.sh b/server-internal/sicherung.sh index 18288de7..7fea4866 100755 --- a/server-internal/sicherung.sh +++ b/server-internal/sicherung.sh @@ -29,6 +29,23 @@ set -uo pipefail +# --------------------------------------------------------------------- +# WER DARF DIE SICHERUNG LESEN +# +# Hier liegen Namen, E-Mail-Adressen, Zahlungen und Widerrufsnachweise +# von Kunden -- an einem Stueck und bequem kopierbar. +# +# Ohne diese Zeile legt root neue Dateien mit 644 an, also fuer jeden +# Systembenutzer lesbar. Auf dieser Maschine sind das fuenf Konten. Das +# wurde nachgemessen: Ein gewoehnliches Konto konnte die Sicherung nach +# /tmp kopieren und die Kundendaten auslesen -- ohne sudo, ohne Huerde. +# +# Eine Sicherung buendelt alles, was sonst verstreut liegt. Sie gehoert +# damit zu den lohnendsten Zielen ueberhaupt und muss enger geschuetzt +# sein als das Original, nicht lockerer. +# --------------------------------------------------------------------- +umask 077 + QUELLE_DB="/var/lib/dogfather-internal/dogfather-internal.db" QUELLE_UPLOADS="/var/lib/dogfather-internal/uploads" ZIEL="/var/backups/dogfather" @@ -50,6 +67,12 @@ fehler() { mkdir -p "$ZIEL/taeglich" "$ZIEL/woechentlich" || fehler "Zielverzeichnis nicht anlegbar" +# umask wirkt nur auf NEU angelegte Dateien. Verzeichnisse, die schon +# bestehen, behalten ihre alten Rechte -- deshalb hier ausdruecklich. +chmod 700 "$ZIEL" "$ZIEL/taeglich" "$ZIEL/woechentlich" 2>/dev/null +find "$ZIEL" -type f -exec chmod 600 {} + 2>/dev/null +find "$ZIEL" -mindepth 1 -type d -exec chmod 700 {} + 2>/dev/null + STEMPEL=$(date '+%Y-%m-%d') ARBEIT="$ZIEL/taeglich/$STEMPEL" mkdir -p "$ARBEIT"