Seite 1 von 1

syslog-Meldungen filtern [gelöst]

Verfasst: 05. Apr 2008 0:51
von komsomolze
Damit normale Benutzer einen watch-Job mit SMART-Abfrage ausführen können:
/etc/sudoers :

Code: Alles auswählen

User_Alias	SMARTGROUP=userA,userB
Cmnd_Alias	SMARTCTL_A=/usr/sbin/smartctl -A -data /dev/[hs]d[a-z]
SMARTGROUP	testing116=NOPASSWD:SMARTCTL_A
Das hat mir aber syslog und xconsole mit sudo-Erfolgsmeldungen zugemüllt, darum zusätzlich:

Code: Alles auswählen

Defaults:SMARTGROUP	syslog_goodpri=info
und /etc/syslog.conf :

Code: Alles auswählen

#auth,authpriv.*			/var/log/auth.log
auth,authpriv.notice			/var/log/auth.log
...
#daemon.*;mail.*;\
#	news.err;\
#	*.=debug;*.=info;\
#	*.=notice;*.=warn	|/dev/xconsole
daemon.*;mail.*;\
	news.err;\
	*.=notice;*.=warn	|/dev/xconsole
wegen der sudo-defaults 'syslog_goodpri=notice' und 'syslog=authpriv'

Nun gilt dies aber nicht nur im Zusammenhang mit SMARTGROUP mit SMARTCTL_A,
sondern für die Mitglieder der SMARTGROUP allgemein.
Ich bekomme also auch keine anderen sudo-Kommandos dieser Benutzer mehr mit.

Weiß jemand, wie ich 'syslog_goodpri=' und/oder 'syslog=' nur an das Kommando selbst binden kann,
sodaß es nicht mehr für die ausführenden Benutzer allgemein gilt?
smartctl wollte ich nicht SUID setzen.

Verfasst: 08. Apr 2008 1:24
von komsomolze
Habe es mit syslog-ng gelöst.
Dessen Filter 'match("...")' (vielleicht auch 'program("...")' ?) kann die Meldungen unterdrücken:

Code: Alles auswählen

filter f_SMARTCTL_A {
    not (facility(authpriv)
        and level(notice)
                and match("smartctl -A -data /dev/"));
};

Code: Alles auswählen

log {
        source(s_all);
        filter(f_auth);
        filter(f_SMARTCTL_A);
        destination(df_auth);
};

...

log {
        source(s_all);
        filter(f_xconsole);
        filter(f_SMARTCTL_A);
        destination(dp_xconsole);
};