fix(check): Log-Verzeichnis darf beim Start angelegt werden
Der Audit-Logger legt sein Verzeichnis per MkdirAll selbst an, check brach aber ab, wenn es noch nicht existierte — der Pruefer war strenger als die Laufzeit und blockierte die Erstinbetriebnahme. Fehlt zusaetzlich das uebergeordnete Verzeichnis, bleibt es ein Fehler: dann steckt fast immer ein Tippfehler im Pfad. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBHF4R9EAejDJUMdwr6C68
This commit is contained in:
parent
6694aa5d2e
commit
a2bce25424
2 changed files with 80 additions and 10 deletions
|
|
@ -152,10 +152,43 @@ func TestLooseTLSKeyIsDetected(t *testing.T) {
|
|||
|
||||
func TestMissingLogDirectoryIsDetected(t *testing.T) {
|
||||
c := newChecker(t, &fakePinger{at: checkNow}, &fakeDir{dn: "CN=x"})
|
||||
// Auch das übergeordnete Verzeichnis existiert nicht — das ist ein
|
||||
// echter Konfigurationsfehler, meist ein Tippfehler im Pfad.
|
||||
c.Cfg.Logging.AuditLog = "/gibt/es/nicht/audit.log"
|
||||
rep := c.Run(context.Background(), "")
|
||||
if rep.OK() {
|
||||
t.Fatal("fehlendes Log-Verzeichnis muss auffallen")
|
||||
t.Fatal("fehlendes Log-Verzeichnis mit fehlendem Elternverzeichnis muss auffallen")
|
||||
}
|
||||
if out := report(t, rep); !strings.Contains(out, "/gibt/es/nicht") {
|
||||
t.Errorf("der beanstandete Pfad muss genannt werden:\n%s", out)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLogDirectoryIsAcceptedIfItCanBeCreated(t *testing.T) {
|
||||
// Der Audit-Logger legt sein Verzeichnis beim Start selbst an. Der Check
|
||||
// darf deshalb nicht strenger sein als die Laufzeit: existiert das
|
||||
// Elternverzeichnis, ist alles in Ordnung.
|
||||
c := newChecker(t, &fakePinger{at: checkNow},
|
||||
&fakeDir{dn: "CN=VPN-Users,DC=firma,DC=local"})
|
||||
parent := filepath.Dir(filepath.Dir(c.Cfg.Logging.AuditLog))
|
||||
c.Cfg.Logging.AuditLog = filepath.Join(parent, "nochnichtda", "audit.log")
|
||||
|
||||
rep := c.Run(context.Background(), "")
|
||||
if !rep.OK() {
|
||||
t.Fatalf("noch nicht angelegtes Log-Verzeichnis darf nicht scheitern:\n%s", report(t, rep))
|
||||
}
|
||||
if out := report(t, rep); !strings.Contains(out, "wird beim Start angelegt") {
|
||||
t.Errorf("der Hinweis auf die spätere Anlage fehlt:\n%s", out)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLogDirectoryWithLoosePermissionsStillFails(t *testing.T) {
|
||||
// Ein existierendes, zu offenes Verzeichnis bleibt ein Fehler.
|
||||
c := newChecker(t, &fakePinger{at: checkNow}, &fakeDir{dn: "CN=x"})
|
||||
os.Chmod(filepath.Dir(c.Cfg.Logging.AuditLog), 0o777)
|
||||
rep := c.Run(context.Background(), "")
|
||||
if rep.OK() {
|
||||
t.Fatal("0777-Log-Verzeichnis muss weiterhin auffallen")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue