feat(ssh): authorized_keys lesen und verwalteten Block setzen (#015)
Reine Funktionen fuer Dry-Run und Ausrollen. Alles ausserhalb des Blocks bleibt bytegenau stehen, auch CRLF, BOM und kaputte Zeilen; der Block entsteht deterministisch aus dem Soll. Ein beschaedigter Block wird nie automatisch ueberschrieben, weil genau dort fremde Zeilen verschwinden koennten. Verwaltete Keys erkennt sshkv am Fingerprint, nicht am Kommentar. Der Deployment-Key kann nicht aus dem Block fallen (Aussperrschutz). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,22 +1,29 @@
|
||||
# #015 authorized_keys: Parser und Merge
|
||||
**Status:** offen
|
||||
**Status:** erledigt
|
||||
**Meilenstein:** v0.2.0
|
||||
**Labels:** backend, test
|
||||
**Geschätzt:** 3 h **Tatsächlich:** –
|
||||
**Geschätzt:** 3 h **Tatsächlich:** 0 h 15 min
|
||||
|
||||
## Ziel
|
||||
Reine Funktionen zum Lesen und Schreiben von `authorized_keys` mit verwaltetem Block.
|
||||
|
||||
## Aufgaben
|
||||
- [ ] Optionen mit Anführungszeichen
|
||||
- [ ] CRLF, BOM, Kommentare, Duplikate
|
||||
- [ ] Block erzeugen/ersetzen, Rest bytegenau
|
||||
- [ ] Aussperrschutz Deployment-Key
|
||||
- [x] Optionen mit Anführungszeichen
|
||||
- [x] CRLF, BOM, Kommentare, Duplikate
|
||||
- [x] Block erzeugen/ersetzen, Rest bytegenau
|
||||
- [x] Aussperrschutz Deployment-Key
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- [ ] Umfangreiche Unit-Tests der Randfälle
|
||||
- [x] Umfangreiche Unit-Tests der Randfälle
|
||||
|
||||
## Abhängigkeiten
|
||||
#001
|
||||
|
||||
## Notizen / Entscheidungen
|
||||
- **Bytegenau:** Zeilen werden an `\n` getrennt, ein `\r` bleibt Teil der Zeile; BOM und fehlende letzte Zeilenschaltung bleiben erhalten. Einzige Änderung außerhalb des Blocks: Fehlt der Block und der letzten Zeile die Zeilenschaltung, bekommt sie eine – sonst stünde der Block-Anfang in derselben Zeile.
|
||||
- **CRLF-Dateien** (überwiegend `\r\n`) bekommen auch im Block CRLF.
|
||||
- **Beschädigter Block** (Anfang ohne Ende, mehrere Blöcke, Ende vor Anfang): nie automatisch schreiben, `BlockFehler` mit Bitte um Handarbeit.
|
||||
- **Erkennung am Fingerprint**, nicht am Kommentar; der Typ im Blob muss zum Zeilentyp passen.
|
||||
- **Optionen:** Parser wie sshd (Kommas in Anführungszeichen, `\"`). Für Benutzereingaben strenger: nur bekannte Optionen, keine Steuerzeichen.
|
||||
- **Aussperrschutz:** Ein `pflicht`-Fingerprint (Deployment-Key), der im Block stand, darf nicht verschwinden.
|
||||
- Diff per LCS, für die Anzeige verdichtet (je 2 Zeilen Kontext).
|
||||
|
||||
Reference in New Issue
Block a user