audit: add support for session ID user filter
Define AUDIT_SESSIONID in the uapi and add support for specifying user filters based on the session ID. Also add the new session ID filter to the feature bitmap so userspace knows it is available. https://github.com/linux-audit/audit-kernel/issues/4 RFE: add a session ID filter to the kernel's user filter Signed-off-by: Richard Guy Briggs <rgb@redhat.com> [PM: combine multiple patches from Richard into this one] Signed-off-by: Paul Moore <paul@paul-moore.com>
This commit is contained in:

committed by
Paul Moore

parent
c1e8f06d7a
commit
8fae477056
@@ -363,6 +363,7 @@ static int audit_field_valid(struct audit_entry *entry, struct audit_field *f)
|
||||
case AUDIT_EXIT:
|
||||
case AUDIT_SUCCESS:
|
||||
case AUDIT_INODE:
|
||||
case AUDIT_SESSIONID:
|
||||
/* bit ops are only useful on syscall args */
|
||||
if (f->op == Audit_bitmask || f->op == Audit_bittest)
|
||||
return -EINVAL;
|
||||
@@ -476,6 +477,7 @@ static struct audit_entry *audit_data_to_entry(struct audit_rule_data *data,
|
||||
if (!gid_valid(f->gid))
|
||||
goto exit_free;
|
||||
break;
|
||||
case AUDIT_SESSIONID:
|
||||
case AUDIT_ARCH:
|
||||
entry->rule.arch_f = f;
|
||||
break;
|
||||
|
@@ -446,6 +446,7 @@ static int audit_filter_rules(struct task_struct *tsk,
|
||||
const struct cred *cred;
|
||||
int i, need_sid = 1;
|
||||
u32 sid;
|
||||
unsigned int sessionid;
|
||||
|
||||
cred = rcu_dereference_check(tsk->cred, tsk == current || task_creation);
|
||||
|
||||
@@ -508,6 +509,10 @@ static int audit_filter_rules(struct task_struct *tsk,
|
||||
case AUDIT_FSGID:
|
||||
result = audit_gid_comparator(cred->fsgid, f->op, f->gid);
|
||||
break;
|
||||
case AUDIT_SESSIONID:
|
||||
sessionid = audit_get_sessionid(current);
|
||||
result = audit_comparator(sessionid, f->op, f->val);
|
||||
break;
|
||||
case AUDIT_PERS:
|
||||
result = audit_comparator(tsk->personality, f->op, f->val);
|
||||
break;
|
||||
|
Reference in New Issue
Block a user