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"