audit-fd: check for CAP_AUDIT_WRITE before opening an audit socket

Adds a check to audit-fd.c to ensure that CAP_AUDIT_WRITE is present in
the set of effective capabilities before opening an audit netlink
socket.  This ensures that unprivileged systemd instances (MANAGER_USER)
don't try to log AVC permission checks with the audit subsystem when
CAP_AUDIT_WRITE is not present.
This commit is contained in:
Gary Tierney
2017-05-12 14:43:39 +01:00
parent 6d395665e5
commit b3fb3c01ee
+8
View File
@@ -27,6 +27,7 @@
#include <libaudit.h>
#include <stdbool.h>
#include "capability-util.h"
#include "fd-util.h"
#include "log.h"
#include "util.h"
@@ -37,6 +38,13 @@ static int audit_fd;
int get_audit_fd(void) {
if (!initialized) {
if (have_effective_cap(CAP_AUDIT_WRITE) == 0) {
audit_fd = -EPERM;
initialized = true;
return audit_fd;
}
audit_fd = audit_open();
if (audit_fd < 0) {