fix(restore): nextcloud permissions on unraid shfs (no-new-privileges removal)

Zweiter Erstlauf 2026-06-03 scheiterte weiterhin mit 503, obwohl
config.php korrekt gepatcht war.

Ursache: Unraid's FUSE/shfs-Dateisystem auf User-Shares ignoriert
chown -R 33:33 still — Dateien bleiben bei sshd:sshd. Der
Nextcloud-Entrypoint versucht intern chmod/chown auf /var/www/html und
/var/www/html/data, was mit no-new-privileges:true blockiert wird.

Fix:
- no-new-privileges vom restoretest-nextcloud Container entfernt,
  damit der Entrypoint Rechte im Container selbst setzen kann
  (Test-Postgres und Test-Redis behalten no-new-privileges)
- Host-seitiger chown durch chmod a+rwX ersetzt (funktioniert auf shfs)
- Vertretbar im isolierten Smoke-Kontext (127.0.0.1, Wegwerf-Daten,
  kein Traefik)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-06-03 10:55:56 +02:00
parent 2913e1005f
commit 5d1ae68705
2 changed files with 12 additions and 7 deletions
+7 -2
View File
@@ -57,5 +57,10 @@ services:
# Restore-Lab-Pfade: alles isoliert, keine produktiven Mounts.
- /mnt/user/backups/restore-lab/nextcloud/html:/var/www/html
- /mnt/user/backups/restore-lab/nextcloud/data:/var/www/html/data
security_opt:
- no-new-privileges:true
# KEIN no-new-privileges fuer den Smoke-Test-Container.
# Der Nextcloud-Entrypoint fuehrt intern chown/chmod auf /var/www/html
# und /var/www/html/data aus. Auf Unraid (FUSE/shfs) ignoriert das
# Host-Dateisystem chown-Aufrufe von aussen, deshalb muss der
# Container-Entrypoint die Rechte selbst setzen koennen. Im isolierten
# Smoke-Kontext (127.0.0.1, kein Traefik, Wegwerf-Daten) ist das
# vertretbar. Test-Postgres und Test-Redis behalten no-new-privileges.
+5 -5
View File
@@ -126,11 +126,11 @@ mv "$EXTRACT_DIR/local/borg-dumps/latest/nextcloud.dump" "$RESTORE_ROOT/dumps/la
# Im Restore-Lab ist das /mnt/user/backups/restore-lab/nextcloud/data.
mkdir -p "$RESTORE_ROOT/data"
# Nextcloud laeuft im Container als www-data (UID 33, GID 33).
# Die aus Borg extrahierten Dateien gehoeren typischerweise dem
# borg-ui-Container-User (sshd o. ae.). Ohne chown scheitert Nextcloud
# beim Start mit "chmod(): Operation not permitted" und gibt dauerhaft 503.
chown -R 33:33 "$RESTORE_ROOT/html" "$RESTORE_ROOT/data"
# Unraid (FUSE/shfs) ignoriert chown auf User-Shares. Stattdessen setzen
# wir die Dateien auf world-writable, damit der Nextcloud-Entrypoint
# (der als root startet und intern auf www-data wechselt) die Dateien
# lesen und beschreiben kann. Im isolierten Smoke-Kontext vertretbar.
chmod -R a+rwX "$RESTORE_ROOT/html" "$RESTORE_ROOT/data"
# Falls config.php einen anderen dbuser als das Test-Compose hat, patchen
# wir die DB-Zugangsdaten in der restaurierten config.php fuer den Test.