blob: 0768d4afa987cbc2fdbb1c3962b61bd6cef843ec [file]
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
# Audit configuration variables can be overridden in distro config or local.conf
# No changes results in using package defaults
# Configuration variables for audit rules
AUDIT_EXCLUDE_BPF ??= "0"
# Configuration variables for auditd daemon
# Defaults come from Linux audit upstream layer if not overridden
AUDITD_MAX_LOG_FILE ??= ""
AUDITD_NUM_LOGS ??= ""
AUDITD_MAX_LOG_FILE_ACTION ??= ""
# Configuration variables for logging audit entries
AUDIT_JOURNAL ??= "1"
do_compile:append() {
# ========================================================================
# Generate openbmc_audit.rules with custom rules
# ========================================================================
cat > ${WORKDIR}/openbmc_audit.rules << 'EOF'
# OpenBMC Default Audit Rules
# Generated dynamically based on build configuration
# DO NOT EDIT - This file is auto-generated during build
EOF
# Add BPF exclusion rule if enabled
if [ "${AUDIT_EXCLUDE_BPF}" = "1" ]; then
cat >> ${WORKDIR}/openbmc_audit.rules << 'EOF'
## Exclude BPF messages to reduce log noise
-a always,exclude -F msgtype=BPF
EOF
fi
}
do_install:append() {
# Install dynamically generated audit rules
install -d ${D}${sysconfdir}/audit/rules.d
install -m 0640 ${WORKDIR}/openbmc_audit.rules \
${D}${sysconfdir}/audit/rules.d/openbmc_audit.rules
# ========================================================================
# Modify auditd.conf with custom settings (if specified)
# ========================================================================
if [ -f "${D}${sysconfdir}/audit/auditd.conf" ]; then
# Modify max_log_file if specified
if [ -n "${AUDITD_MAX_LOG_FILE}" ]; then
sed -i "s/^max_log_file =.*/max_log_file = ${AUDITD_MAX_LOG_FILE}/" \
${D}${sysconfdir}/audit/auditd.conf
fi
# Modify num_logs if specified
if [ -n "${AUDITD_NUM_LOGS}" ]; then
sed -i "s/^num_logs =.*/num_logs = ${AUDITD_NUM_LOGS}/" \
${D}${sysconfdir}/audit/auditd.conf
fi
# Modify max_log_file_action if specified
if [ -n "${AUDITD_MAX_LOG_FILE_ACTION}" ]; then
sed -i "s/^max_log_file_action =.*/max_log_file_action = ${AUDITD_MAX_LOG_FILE_ACTION}/" \
${D}${sysconfdir}/audit/auditd.conf
fi
fi
}
# ========================================================================
# Modify systemd with custom settings (if specified)
# ========================================================================
PACKAGE_WRITE_DEPS:auditd:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd-systemctl-native', '',d)}"
pkg_postinst:auditd:append () {
if [ "${AUDIT_JOURNAL}" = "0" ]; then
if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd','true','false',d)}; then
# Turn off audit entries in journal
systemctl --root=$D mask systemd-journald-audit.socket
fi
fi
}