feat: die Archive lassen sich aus dem Panel holen

Einstellungen -> "Sicherungen holen": die fertigen Archive mit Datum, Groesse
und einem Knopf. Der erste Schritt, der eine Kopie VON DIESEM RECHNER HERUNTER
bringt -- bisher haette man sich dafuer per Fernwartung auf den Server klicken
muessen, und genau daran hat es gelegen. Nicht Unwille, sondern
Umstaendlichkeit.

Der Ordner haengt NUR LESEND in den Container. Ein Dienst, der seine eigenen
Sicherungen loeschen kann, ist genau das Werkzeug, das man einem uebernommenen
Dienst nicht in die Hand geben will. Nachgemessen im Container:

    touch /sicherungen/probe  ->  Read-only file system

Und es gibt NUR EINE FORM VON NAMEN -- nicht "alles ausser .. und /", sondern
ein Muster, das genau auf die eigenen Archive passt. Wer einen Pfad
hineinschmuggeln will, muesste ihn erst so benennen. Das ist der Unterschied
zwischen dicht gemacht und dicht gebaut:

    ../../etc/passwd                -> 404
    ..%2f..%2fdata%2fmedia.db       -> 400
    media.db                        -> 400
    <archiv>.tar.gz.evil            -> 400
    ohne Anmeldung                  -> 401

Der ganze Weg einmal wirklich gegangen, nicht nur die Kopfzeilen: 336 MB in
15,9 s durch den Proxy, sha256 auf der Platte gleich sha256 heruntergeladen,
tar tzf zeigt 4639 Eintraege. Gestroemt und nicht in den Speicher gelesen --
sonst haetten Dienst UND Proxy die 336 MB gleichzeitig im Arbeitsspeicher.

Jeder Griff steht im Verwaltungs-Verlauf. Geloggt wird der GRIFF und nicht der
Erfolg: ein abgebrochener Download taucht ebenfalls auf, und das ist gewollt --
wer spaeter fragt, wer sich den Bestand geholt hat, will die Anfrage sehen.

Die fuenf neuen Pruefungen sind in tools/rundgang.py mit drin; der steht jetzt
bei 29 in Ordnung, 0 nicht.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-12 15:46:03 +02:00
co-authored by Claude Opus 5
parent 3a89acaa41
commit ab93e0ae4e
8 changed files with 277 additions and 1 deletions
+45
View File
@@ -1235,6 +1235,51 @@ Dazu steht auf der Serverseite schon alles bereit: `sshd` läuft (Automatic,
fehlt ein Konto, das nur lesen darf — und ein Skript auf dem Heimrechner, das
**holt**. Kandidaten und Begründung in `docs/ideen.md`.
### ✅ Fertig — die Archive lassen sich aus dem Panel holen
Einstellungen → **Sicherungen holen**: die fertigen Archive mit Datum, Größe
und einem Knopf. Der erste Schritt, der eine Kopie **von diesem Rechner
herunter** bringt — bisher hätte man sich dafür per Fernwartung auf den Server
klicken müssen, und genau daran hat es gelegen. Nicht Unwille, sondern
Umständlichkeit.
**Der Ordner hängt nur lesend.** Ein Dienst, der seine eigenen Sicherungen
löschen kann, ist genau das Werkzeug, das man einem übernommenen Dienst nicht
in die Hand geben will. Herausgeben reicht. Nachgemessen im Container:
```
touch /sicherungen/probe -> Read-only file system
```
**Und es gibt nur eine Form von Namen** — nicht „alles außer `..` und `/`",
sondern ein Muster, das genau auf die eigenen Archive passt. Wer einen Pfad
hineinschmuggeln will, müsste ihn erst so benennen. Das ist der Unterschied
zwischen dicht gemacht und dicht gebaut:
```
../../etc/passwd -> 404
..%2f..%2fdata%2fmedia.db -> 400
media.db -> 400
d4rk_media-…-0854.tar.gz.evil -> 400
ohne Anmeldung -> 401
```
Der ganze Weg einmal wirklich gegangen, nicht nur die Kopfzeilen:
```
336 MB in 15,9 s durch den Proxy (~21 MB/s)
sha256 auf der Platte == sha256 heruntergeladen
tar tzf -> 4639 Eintraege
```
Jeder Griff steht im **Verwaltungs-Verlauf** (`sicherung | geholt | <Datei> |
<Bytes> | <wer>`). Geloggt wird der Griff und nicht der Erfolg: ein
abgebrochener Download taucht dort ebenfalls auf, und das ist so gewollt — wer
später fragt, wer sich den Bestand geholt hat, will die Anfrage sehen.
Die fünf neuen Prüfungen sind in `tools/rundgang.py` mit drin; der steht jetzt
bei **29 in Ordnung, 0 nicht**.
### ⬜ Als Nächstes
**Der Vergleichsmaßstab ist weg.** Am 11.08.2026 sind die Lite-Container