Linux auditd und CRLF

Bei mir lagen heute zwei Dateien in /etc/audit/rules.d. Wenn in der zweiten alle Regeln auskommentiert wurden, funktionierte auditd zumindest mit den Regeln der ersten Datei.
Kaum wurden die Regeln in der zweiten Datei aktiviert, funktionierte gar nichts mehr.

Und wieder einmal habe ich einen Tag Lebenszeit verloren …


Der Linux-Wächter: auditd

Ich durfte für ein Projekt in der Firma den Einsatz des Linux Daemons auditd ausprobieren. Dieser lädt seine Konfiguration aus .rules Dateien, die in /etc/audit/rules.d liegen.
auditd loggt dann Zugriffe auf Dateien, Programme oder Systemcalls, die man dann für Sicherheitsprüfungen nutzen kann.

So weit, so gut.

CRLF == Error

Natürlich habe ich logische Unterteilungen dieser “Rules” in mehrere Dateien gemacht, die man dann über das selektive Kopieren von Dateien verteilen kann.
Und plötzlich funktionierte nichts mehr.

Ein Aufruf von auditctl -l zeigte, dass keine einzige Regel geladen wurde, obwohl alle Regeln zuvor in einer einzigen Datei perfekt funktioniert hatten.

Immer wieder kopierte ich die Dateien per SSH zwischen meinem Windows System und dem Linux-Testsystem hin und her. Wurden alle Rules in der Datei per # Präfix auskommentiert und die Rules in einer anderen Datei eingebunden, wurden sie geladen und funktionierten.

Nach mehreren Zweifeln an meiner Gesundheit, erkannte ich ganz unten rechts in der Statuszeile von Visual Studio Code den Unterschied zwischen den Dateien:

Die Originale waren mit typischen Linux LF Zeilenenden versehen, nur die eine störrische, die ich unter Windows neu angelegt hatte, zeigte: CRLF an.

Fazit

So ein Fu**!

Naja … ich hätte da auch schon schneller darauf kommen können, aber wenn man die ersten Dateien “zufällig” auf dem richtigen System erstellt hat und einem nur die letzte in die Suppe spuckt, wird man eben blind für die Frage aus der Schreibmaschinenwelt.

Mich ärgert das deshalb, weil ich jetzt seit 20 Jahren in meinen Codes immer beide Line-Ending Fälle brav behandle.
Das hätten die Macher von auditd auch tun können, schließlich braucht man nur das CR vor einem LF wegkürzen und alles ist gut.

However … Gefahr erkannt, Gefahr gebannt.