Skip to contentSkip to conversation

make set_loginuid obey audit_enabled

PATCH In review Steve Grubb 2 participants 3 messages Jun 12, 2006 – Jun 13, 2006 Audit

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 make set_loginuid obey audit_enabled

Hi,

I was doing some testing and noticed that when the audit system was disabled, I was still getting messages about the loginuid being set. The following patch makes audit_set_loginuid look at in_syscall to determine if it should create an audit event. The loginuid will continue to be set as long as there is a context.

kernel/auditsc.c +15 -10
diff -urp linux-2.6.16.x86_64.orig/kernel/auditsc.c linux-2.6.16.x86_64/kernel/auditsc.c
@@ -1275,18 +1275,23 @@ void auditsc_get_stamp(struct audit_cont
  */
 int audit_set_loginuid(struct task_struct *task, uid_t loginuid)
 {
-	if (task->audit_context) {
-		struct audit_buffer *ab;
+	struct audit_context *context = task->audit_context;
 
-		ab = audit_log_start(NULL, GFP_KERNEL, AUDIT_LOGIN);
-		if (ab) {
-			audit_log_format(ab, "login pid=%d uid=%u "
-				"old auid=%u new auid=%u",
-				task->pid, task->uid, 
-				task->audit_context->loginuid, loginuid);
-			audit_log_end(ab);
+	if (context) {
+		/* Only log if audit is enabled */
+		if (context->in_syscall) {
+			struct audit_buffer *ab;
+
+			ab = audit_log_start(NULL, GFP_KERNEL, AUDIT_LOGIN);
+			if (ab) {
+				audit_log_format(ab, "login pid=%d uid=%u "
+					"old auid=%u new auid=%u",
+					task->pid, task->uid, 
+					context->loginuid, loginuid);
+				audit_log_end(ab);
+			}
 		}
-		task->audit_context->loginuid = loginuid;
+		context->loginuid = loginuid;
 	}
 	return 0;
 }
#1 lore raw

Steve Grubb wrote: [Mon Jun 12 2006, 07:48:28AM EDT]

Quoted 4 lines

I was doing some testing and noticed that when the audit system was disabled, I was still getting messages about the loginuid being set. The following patch makes audit_set_loginuid look at in_syscall to determine if it should create an audit event. The loginuid will continue to be set as long as there is a context.

Do we really want to do away with these records? The loginuid is used in several records that can be logged even with syscall auditing disabled, e.g. AUDIT_CONFIG_CHANGE records generated by AUDIT_SET operations.

It seems like we would want the LOGIN records for a complete trail of what happened.

Quoted 46 lines

diff -urp linux-2.6.16.x86_64.orig/kernel/auditsc.c linux-2.6.16.x86_64/kernel/auditsc.c

kernel/auditsc.c +15 -11
@@ -1275,18 +1275,23 @@ void auditsc_get_stamp(struct audit_cont
  */
 int audit_set_loginuid(struct task_struct *task, uid_t loginuid)
 {
-	if (task->audit_context) {
-		struct audit_buffer *ab;
+	struct audit_context *context = task->audit_context;
 
-		ab = audit_log_start(NULL, GFP_KERNEL, AUDIT_LOGIN);
-		if (ab) {
-			audit_log_format(ab, "login pid=%d uid=%u "
-				"old auid=%u new auid=%u",
-				task->pid, task->uid, 
-				task->audit_context->loginuid, loginuid);
-			audit_log_end(ab);
+	if (context) {
+		/* Only log if audit is enabled */
+		if (context->in_syscall) {
+			struct audit_buffer *ab;
+
+			ab = audit_log_start(NULL, GFP_KERNEL, AUDIT_LOGIN);
+			if (ab) {
+				audit_log_format(ab, "login pid=%d uid=%u "
+					"old auid=%u new auid=%u",
+					task->pid, task->uid, 
+					context->loginuid, loginuid);
+				audit_log_end(ab);
+			}
 		}
-		task->audit_context->loginuid = loginuid;
+		context->loginuid = loginuid;
 	}
 	return 0;
 }
 
--

Linux-audit mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/linux-audit

#2 lore raw
Quoted 2 lines · Amy Griffis

It seems like we would want the LOGIN records for a complete trail of what happened.

When audit is enabled, I think so. Otherwise they spam the console because that's what syslog does with them. With audit disabled, you can already make other changes with no record. This patch just makes it consistent with all the other pieces.

-Steve