From 2753677c7cb6da0b60f635f069d1fa7b99ac2251 Mon Sep 17 00:00:00 2001 From: spektr Date: Fri, 30 Oct 2026 16:36:59 +0100 Subject: [PATCH] CT-101 Samba: ganesha 6.5 Client-Allowlist per CLIENT-Block (vor EXPORT) - Mount von ghostnet-ki schlug mit EPERM fehl: Export hatte "0 defined clients" (kein clients-Parameter -> Zugriffspruefung schlaegt fehl) - Ganesha 6.5: CLIENT-Block mit kleingeschriebenem `clients`, Block MUSS vor dem EXPORT stehen (Parser ist reihenfolgeempfindlich); gegen den 6.5-Parser verifiziert. EXPORT auf Access_Type = None (deny-by-default), CLIENT gewaehrt 10.0.0.90 RW; nftables deckelt zusaetzlich auf 2049 nur von 10.0.0.90 Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe --- .../GNAI-017-PLAN_Samba-NFS-Export.md | 12 ++++++------ .../GNAI-019-DEC_Ansible-Migration.md | 9 ++++++++- .../roles/samba_nfs/templates/ganesha.conf.j2 | 17 +++++++++++------ 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/docs/platform/proxmox-server/lxc/ct-101-samba/GNAI-017-PLAN_Samba-NFS-Export.md b/docs/platform/proxmox-server/lxc/ct-101-samba/GNAI-017-PLAN_Samba-NFS-Export.md index 82d6917..eced3de 100644 --- a/docs/platform/proxmox-server/lxc/ct-101-samba/GNAI-017-PLAN_Samba-NFS-Export.md +++ b/docs/platform/proxmox-server/lxc/ct-101-samba/GNAI-017-PLAN_Samba-NFS-Export.md @@ -152,12 +152,12 @@ GNENC-002 Abschnitt 4): `input/`, `jd/`, `queue/`, `work/`, `output/`, `proxmox/lxc/ct-101-samba/` ist gebaut (Design in [GNAI-019](GNAI-019-DEC_Ansible-Migration.md), Requirements in [GNAI-018](GNAI-018-REQ_Encoding-Pipeline-Integration.md)) und lokal - verifiziert (Syntax-Checks, Check-Mode-Smoke). **In Arbeit (Stand - 27.10.2026):** Adoption gemäß Runbook in `ansible/README.md` — Schlüssel - installiert, SSH-Zugang für `ghost-agent` (UID 1004) und `ghost` (UID 1000) - hergestellt; die elf Inventory-Platzhalter wurden am 27.10.2026 aus - preflight/live gefüllt (alle drei Inventare byte-identisch); ausstehend: - audit, bootstrap, Konvergenz, Verifikation. + verifiziert (Syntax-Checks, Check-Mode-Smoke). **Adoption erledigt + 30.10.2026:** Audit ok=26 changed=0; Bootstrap ok=32 changed=9; + Pre-Migration-Backup `pre-migration-20261029T181754Z`; + `site.yml --check --diff` ok=100 changed=20; Konvergenz ok=128 changed=2; + verify-production ok=61 changed=0; Idempotenz-Lauf changed=0 — Details in + GNAI-019 Abschnitt 16. 2. **`[printers]` doppelt** in der `smb.conf` — erledigt: Das Duplikat (inkl. Kommentarblöcke) ist im templated `smb.conf` bereinigt; `testparm` ist als `validate:`-Gate im Rollen-Flow verankert (GNAI-019 Entscheidung 7). diff --git a/docs/platform/proxmox-server/lxc/ct-101-samba/GNAI-019-DEC_Ansible-Migration.md b/docs/platform/proxmox-server/lxc/ct-101-samba/GNAI-019-DEC_Ansible-Migration.md index c61b296..ca2a2d1 100644 --- a/docs/platform/proxmox-server/lxc/ct-101-samba/GNAI-019-DEC_Ansible-Migration.md +++ b/docs/platform/proxmox-server/lxc/ct-101-samba/GNAI-019-DEC_Ansible-Migration.md @@ -346,7 +346,14 @@ dieselbe Person auf Medien-/SMB-Ebene ist nicht erforderlich. ## 16. Offene Punkte 1. Adoption des produktiven CT 101 gemäß Runbook in - `proxmox/lxc/ct-101-samba/ansible/README.md` (erfordert Betreiber-Autorisierung). + `proxmox/lxc/ct-101-samba/ansible/README.md` — **erledigt 30.10.2026:** + Audit ok=26 changed=0; Bootstrap ok=32 changed=9 (ansible-deploy UID 1005, + NOPASSWD, SSH-Hardening); Backup `pre-migration-20261029T181754Z`; + check --diff ok=100 changed=20; Konvergenz ok=128 changed=2 (Ganesha-Quadlet + healthy mit 2049 TCP/UDP, 14 Shares inkl. [Encode]/[Encode-In], passdb + unverändert mit ghost/daidalaw/debugofen, nftables ghostnet_filter aktiv); + verify-production ok=61 changed=0; Idempotenz-Lauf changed=0. Reboot-Test + und NFSv4.2-Mount-Test von ghostnet-ki siehe Punkt 5 bzw. GNAI-017. 2. Elf Inventory-Platzhalter mit den Ist-Werten füllen (`preflight.yml` / `audit-production.yml` liefern sie) — **erledigt 27.10.2026**: preflight und Live-Abfragen lieferten die Werte; alle drei Inventare sind byte-identisch diff --git a/proxmox/lxc/ct-101-samba/ansible/roles/samba_nfs/templates/ganesha.conf.j2 b/proxmox/lxc/ct-101-samba/ansible/roles/samba_nfs/templates/ganesha.conf.j2 index ac0ff4b..65db83d 100644 --- a/proxmox/lxc/ct-101-samba/ansible/roles/samba_nfs/templates/ganesha.conf.j2 +++ b/proxmox/lxc/ct-101-samba/ansible/roles/samba_nfs/templates/ganesha.conf.j2 @@ -23,20 +23,25 @@ EXPORT_DEFAULTS { Access_Type = None; } +# Client allowlist: only ghostnet-ki gets RW (GNAI-017 section 4.1). Ganesha +# 6.5 syntax: CLIENT block with lowercase `clients` parameter, and it must +# appear BEFORE the EXPORT block (parser is order-sensitive; verified against +# the 6.5 parser on 2026-10-30). Additionally the nftables policy only admits +# 2049 from 10.0.0.90 (samba_firewall, asserted by verify-production.yml). +CLIENT { + clients = {{ samba_nfs_client_ipv4 }}; + Access_Type = RW; +} + EXPORT { Export_Id = {{ samba_nfs_export_id }}; Path = {{ samba_nfs_export_path }}; Pseudo = {{ samba_nfs_export_path }}; - Access_Type = RW; + Access_Type = None; Squash = rootid; SecType = sys; Protocols = 4; Transports = TCP,UDP; - # Client restriction ("only ghostnet-ki 10.0.0.90", GNAI-017 section 4.1) is - # enforced by the nftables policy (port 2049 only from 10.0.0.90, default - # drop; samba_firewall, asserted by verify-production.yml). Ganesha 6.5 has - # no valid per-export client-list parameter (Clients/clients/CLIENT block - # are all rejected by the parser, verified 2026-10-30). FSAL { Name = VFS; }