Fix SELinux backup execution context and probe source metadata before downtime
This commit is contained in:
1 parent
5c8a7a30be
commit
c0a24b63fc
9 files changed
+193
-14
No files matched your search
+34
-2
@@ -54,6 +54,35 @@ flowchart TD
|
||||
|
||||
Dateikopien erhalten mit `rsync -aHAX --numeric-ids` Eigentümer, Modus, Symlinks, Hardlinks innerhalb einer Komponente, ACLs und Extended Attributes. Tar erhält diese Metadaten einschließlich SELinux. Plattform-/Dateisystemunterstützung ist Voraussetzung. Externe Symlink-Ziele werden nicht automatisch gesichert; absolute Symlinks als einzelne Einträge bleiben erhalten. Geräte, FIFOs und andere Spezialdateien werden von der Archivprüfung abgelehnt. Zusätzliche Pfade sind deshalb Datenverzeichnisse, kein Ersatz für ein vollständiges Systemimage.
|
||||
|
||||
Vor jedem Backup und bei `--check` prüft rsync das Auflisten der Quellwurzel sowie
|
||||
das Übertragen ihrer Verzeichnisattribute in einen privaten temporären Prüfbereich
|
||||
unter `STAGING_ROOT`. Alle Kindobjekte sind von der Attributprobe ausgeschlossen;
|
||||
Datei-Inhalte werden nicht kopiert. Die Probe wird danach entfernt. Das erkennt
|
||||
beispielsweise eine SELinux-Ablehnung von `opendir` oder `relabelfrom` vor dem
|
||||
Wartungsmodus. Es belegt nicht den Zugriff auf jede untergeordnete Datei oder
|
||||
jedes dort abweichende Attribut. Der echte Kopierlauf bleibt strikt fehlergeprüft.
|
||||
Die rsync-Kindprozesse erhalten keine geerbten Update-/Backup-Sperrdeskriptoren;
|
||||
der übergeordnete Prozess hält seine Sperren unverändert weiter.
|
||||
|
||||
Backup-Dienst und abgekoppelter Update-Auftrag starten über `/bin/bash` mit
|
||||
`SELinuxContext=system_u:system_r:unconfined_service_t:s0`. Das erlaubt dem
|
||||
privilegierten Backup, unterschiedliche Web-, Mail- und Home-Labels zu lesen
|
||||
und Sicherheitsattribute zu erhalten. **Diese Prozesse und ihre Kindprozesse
|
||||
sind damit bewusst nicht durch SELinux eingeschränkt**; die übrigen Dienste
|
||||
bleiben ihrer bestehenden Policy unterworfen. Das ist keine eigens eingeschränkte
|
||||
Backup-Policy. Es werden keine globalen rsync-Booleans, Quell-Labels oder
|
||||
Dateizugriffsrechte geändert. Ein verweigerter Kontext wird nicht mit dem
|
||||
systemd-Präfix `-` übergangen. Bei deaktiviertem SELinux ignoriert systemd die
|
||||
Kontexteinstellung.
|
||||
|
||||
Auf Gemini wurde am 10.09.2026 unter Enforcing die Startkette Bash → rsync mit
|
||||
diesem Kontext und erfolgreichem Auflisten von `/var/www/html` bestätigt. Der
|
||||
direkte Start von rsync als Unit-Einstiegspunkt scheiterte dagegen mit 203/EXEC;
|
||||
deshalb verwenden beide Units ausdrücklich Bash. Dieser Lesetest bestätigt
|
||||
noch keine vollständige Attributübertragung oder Sicherung. Referenzen:
|
||||
[systemd SELinuxContext](https://github.com/systemd/systemd/blob/v256/man/systemd.exec.xml),
|
||||
[Fedora-SELinux-Domain und Einstiegspunkte](https://github.com/fedora-selinux/selinux-policy/blob/rawhide/policy/modules/system/unconfined.te).
|
||||
|
||||
Die Kompression schreibt direkt aus tar in `.partial`-Dateien. Erst erfolgreiche Pipelines werden umbenannt. zstd nutzt standardmäßig Stufe 6 und zwei Threads. `sync -f` vor Fortsetzung bzw. Retention fordert die Persistierung des lokalen Satzes an; Hardware-/Storagefehler bleiben eine eigene Ebene.
|
||||
|
||||
## Format und Komponenten
|
||||
@@ -331,10 +360,13 @@ Die Entfernung der drei DB-Dateien aus dem aktuellen Baum löscht deren Historie
|
||||
|
||||
Reproduzierbar mit `tests/Dockerfile` und `tests/run.sh`. Der Container bekommt das Repository nur lesbar und benötigt während der Tests kein Netzwerk. Die MariaDB läuft ohne TCP-Port in einem temporären Verzeichnis. systemd/occ werden simuliert; alle eigentlichen Archive, Dateikopien, Dumps/Imports und Crypt-Operationen sind real.
|
||||
|
||||
Ergebnis des lokalen Abschlusslaufs am 10.09.2026: **41 Tests erfolgreich**, Shell-Syntax und ShellCheck ohne Befund. Testumgebung: Debian 13.6, MariaDB 11.8.6, rclone 1.60.1-DEV (Distributionspaket), ShellCheck 0.10.0. Diese Versionsangaben beschreiben die Testumgebung, keine Empfehlung für die Produktivversion.
|
||||
Ergebnis des lokalen Abschlusslaufs am 10.09.2026: **44 Tests erfolgreich**, Shell-Syntax und ShellCheck ohne Befund. Testumgebung: Debian 13.6, MariaDB 11.8.6, rclone 1.60.1-DEV (Distributionspaket), ShellCheck 0.10.0. Diese Versionsangaben beschreiben die Testumgebung, keine Empfehlung für die Produktivversion.
|
||||
|
||||
Geprüfte Fälle umfassen:
|
||||
|
||||
- Verweigerter rsync-Quellzugriff bricht das Update vor Installation und Dienst-Stopp ab.
|
||||
- Verweigerte Verzeichnisattribute werden vor Wartungsmodus erkannt; der private Prüfbereich wird entfernt.
|
||||
- Attributprobe kopiert keine Kindobjekte; rsync erbt bei Prüfung, Backup und Restore keine Update-/Backup-Sperrdeskriptoren.
|
||||
- Fehlendes globales `RELOAD` bei eingeschränktem Konto: Vorprüfungsabbruch ohne Installation/Writer-Stopp, anschließend erfolgreicher Paketlauf nach gezieltem Grant. Aktive verschachtelte MariaDB-Rollen werden anerkannt, inaktive Rollen abgewiesen.
|
||||
- Fehlender Zugriff auf MariaDB-Routinen-Metadaten vor Wartungsmodus erkannt; nach gezielter Berechtigung tatsächlicher Dump mit gespeicherter Prozedur geprüft.
|
||||
- Fehlender Mailstore ohne Live-Änderung, explizite Pfadkorrektur, Homes-only-Update samt tatsächlichem Maildatei-Restore und Ablehnung unvollständiger Home-Konfigurationen.
|
||||
@@ -354,4 +386,4 @@ Geprüfte Fälle umfassen:
|
||||
- Abgewiesene systemd-Übergabe, zurückgezogene Freigabe bei bereits eingereihtem Auftrag und persistente Fehlerprotokolle bei Sperr-Timeout; jeweils ohne Installationsänderung oder Timer-Stopp.
|
||||
- Ausdrückliche Cron-Policy und Writer-Wartezeit/Timeout.
|
||||
|
||||
**Serverabnahme steht separat aus:** echte Rocky-Linux-10-Umgebung, SELinux-/ACL-Verhalten auf den verwendeten Dateisystemen, installierte Nextcloud-/Gitea-Versionen, vollständige Writer-/Pfadliste, Berechtigungen des echten DB-Backupaccounts, tatsächlicher OneDrive-Upload großer Archive, Laufzeit/Speicherbedarf und fachliche Restore-Probe. Es wurde kein Produktivbackup ausgeführt und keine Serverinstallation verändert.
|
||||
**Serverabnahme steht separat aus:** SELinux-/ACL-Verhalten beim vollständigen Kopieren auf den verwendeten Dateisystemen, installierte Nextcloud-/Gitea-Versionen, vollständige Writer-/Pfadliste, tatsächlicher OneDrive-Upload großer Archive, Laufzeit/Speicherbedarf und fachliche Restore-Probe. Die Entwicklungstests verändern keinen Produktivserver. Vom Betreiber ausgeführte Paketläufe haben die Installation auf Gemini bereits aktualisiert; alle drei DB-Dumps waren erfolgreich. Eine vollständige erfolgreiche Sicherung und fachliche Wiederherstellung sind noch nicht bestätigt.
|
||||
Reference in new issue
Block a user