Files
management/docs/adr/0008-agenten-sessions-root-aequivalent.md
Thore CimbalandClaude Fable 5 92b448fe30 feat: slice 3 - wiki, sources and AARs in their neckbeard homes
Gate 4, slice 3: verfahren/, hosts/, vision/ and shared/ moved via git
mv - six AARs to docs/aar/ (four harvested by the 2026-08-09 retro,
two open), procedures and host knowledge to docs/wiki/ (admin,
deployment, architecture, new area vision), the retro protocol and the
commit mapping table to docs/sources/ (protokolle/, migration/). New:
the wiki index linking every page, and the mirror-topology page
carrying the why-two-places reasoning verbatim from the old CLAUDE.md
(F-013 preserved). All moved-path references retargeted; the link
checker drove the sweep to zero.

pruefe_prosa.py added (pattern C+D): SHA citations resolve via repo,
mapping table, optional component clones or a curated exemption list
(documented dead Gitea-force-push commits, a vendor-repo tag, an
Authentik uid that is hex but no git SHA, the external neckbeard
reference); wiki task prose without an issue reference errors, with a
visible pragma for deliberate checklists; the dead-tracker denylist
now covers every mirrored repo's retired Gitea tracker (F-005) - two
links re-verified against live GitLab titles and retargeted, five
defused into honest historical citations.

Verified: validate 0/0, gen_status --check current, drift 0. Demo on
the pre-migration state fires 6 findings (3 orphaned SHAs, 3 task
blocks); on the current tree exactly the 3 F-004 task blocks remain -
they turn green in slice 4 when the issues exist, which is why
pruefe_prosa joins CI only then.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 12:00:00 +00:00

4.4 KiB

type, id, status, date, supersedes, superseded_by, related
type id status date supersedes superseded_by related
adr 0008 accepted 2026-08-06 null null

0008 — Agenten-Sessions auf CFGMON laufen root-äquivalent über die docker-Gruppe

Status: akzeptiert · Datum: 2026-08-06 (Struktur-Workshop #17) · Entscheider: sorb

Kontext

sudo ist aus einer Agenten-Session nicht bedienbar: Es gibt kein TTY, also auch keine Passworteingabe („a terminal is required to read the password"). Die LABNET-02-Nacht lief deshalb über die docker-Gruppenmitgliedschaft des Kontos rantanplan — privilegierter Container plus nsenter in die Host-Namespaces.

Das ist root-äquivalent, und zwar ohne Umweg: Wer Docker steuern darf, darf alles. Auf Linux ist das normales Verhalten der docker-Gruppe und kein Konfigurationsfehler — aber es hat zwei Folgen, die benannt gehören:

  1. Die sudo-Passwortabfrage ist für dieses Konto keine Sicherheitsgrenze. Sie sieht aus wie eine, ist aber umgehbar, ohne dass jemand etwas umgehen wollte.
  2. Dieser Weg hinterlässt keinen Eintrag in auth.log. Was über die docker-Gruppe geschieht, ist im Nachhinein nicht aus den üblichen Protokollen rekonstruierbar.

Aufgedeckt im CFGMON-AAR (Befund 3, MEDIUM), erfasst als #14.

Entscheidung

Es bleibt so — ausdrücklich und dokumentiert. Agenten-Sessions auf CFGMON arbeiten root-äquivalent über die docker-Gruppe.

Daraus folgt unmittelbar: Auf diesem Host gilt „sudo mit Passwort" nicht als Kontrollmechanismus. Wer dort Sicherheit gegen unbeabsichtigte oder unerwünschte Änderungen braucht, muss sie woanders aufhängen — an der Erreichbarkeit des Hosts, an der Vergabe der Zugangsdaten, an der Frage, wer überhaupt eine Session starten kann.

Ziel bleibt Option C (eigenes Agenten-Konto mit definierter, protokollierter Rechteerhöhung), aber erst wenn ein zweiter Mensch mitarbeitet. Der Nutzen von C ist Zuordnung — nachvollziehen zu können, wer was getan hat. Im Ein-Personen-Betrieb gibt es niemanden, gegen den diese Zuordnung schützen würde; sie wäre Aufwand ohne Adressaten.

Konsequenzen

  • Der Arbeitsweg bleibt funktionsfähig. Host-Sessions können weiterarbeiten; ohne diese Entscheidung wäre LABNET-02 gar nicht durchführbar gewesen.
  • Die Protokollierung fehlt und wird nicht ersetzt. Wer im Nachhinein wissen will, was eine Session auf CFGMON getan hat, findet es nicht in auth.log, sondern nur in Git-Historie, Issues und AARs. Das ist der Grund, warum die AAR-Pflicht und „alles Offene wird ein Issue" auf diesem Host besonders zählen — sie sind hier der einzige Nachvollzug.
  • Ein kompromittiertes rantanplan-Konto ist ein kompromittierter Host. Nicht neu durch diese Entscheidung, aber jetzt ausgesprochen.
  • Auslöser für Option C ist ein zweiter Mensch mit Zugang — nicht ein Datum. Kommt einer dazu, wird diese ADR abgelöst.

Offen, bewusst nicht vor der Entscheidung geklärt

Das Issue verlangte vorab zu klären, welche anderen Konten in der docker-Gruppe sind und ob dasselbe auf MATRIX gilt. Beides ist ungeprüft — dafür braucht es eine Host-Session, vom Mac aus ist es nicht einsehbar.

Das ändert an der Entscheidung nichts (sie betrifft den Weg, nicht seinen Umfang), wohl aber an ihrer Reichweite: Sollte sich zeigen, dass weitere Konten in der Gruppe sind, ist zu prüfen, ob die alle dort hingehören. Nachzuholen bei der nächsten Host-Session, festgehalten in #14.

Verworfene Alternativen

  • B — Konto aus der docker-Gruppe nehmen, Docker-Zugriff über gezielte sudo-Regeln. Auditierbar, aber es legt Agenten-Sessions auf CFGMON lahm: sudo braucht ein TTY, das eine Session nicht hat. Löst ein Protokollproblem, indem es den Arbeitsweg entfernt — vertretbar erst, wenn ein Ersatz steht.
  • C sofort — getrenntes Agenten-Konto mit protokollierter Rechteerhöhung. Sauberste Lösung, aber echte Arbeit für einen Nutzen, der im Ein-Personen-Betrieb nicht anfällt. Bleibt das Ziel, siehe oben.
  • Stillschweigend so lassen. Genau das ist der Fehler, den ADR-0002 und die ADR-Pflicht für dauerhafte Ausnahmen adressieren: Eine Ausnahme nur zu dokumentieren statt sie zu entscheiden, ist keine Entscheidung. Deshalb diese ADR und nicht bloß ein Absatz in hosts/cfgmon.md.