1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-07 18:27:04 +03:00

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-02 21:05:32 +01:00
parent 6d395665e5
commit b3fb3c01ee

View File

@ -27,6 +27,7 @@
#include <libaudit.h> #include <libaudit.h>
#include <stdbool.h> #include <stdbool.h>
#include "capability-util.h"
#include "fd-util.h" #include "fd-util.h"
#include "log.h" #include "log.h"
#include "util.h" #include "util.h"
@ -37,6 +38,13 @@ static int audit_fd;
int get_audit_fd(void) { int get_audit_fd(void) {
if (!initialized) { if (!initialized) {
if (have_effective_cap(CAP_AUDIT_WRITE) == 0) {
audit_fd = -EPERM;
initialized = true;
return audit_fd;
}
audit_fd = audit_open(); audit_fd = audit_open();
if (audit_fd < 0) { if (audit_fd < 0) {