summaryrefslogtreecommitdiff
path: root/security/ipe/eval.c
diff options
context:
space:
mode:
authorDeven Bowers <deven.desai@linux.microsoft.com>2024-08-02 23:08:24 -0700
committerPaul Moore <paul@paul-moore.com>2024-08-20 14:02:27 -0400
commita68916eaedcd01f254ac4c09ca12b5065d710fd0 (patch)
tree4d9f82724404cf29cbfaa9150f439e1e3b2933d4 /security/ipe/eval.c
parentf44554b5067b36c14cc91ed811fa1bd58baed34a (diff)
ipe: add permissive toggle
IPE, like SELinux, supports a permissive mode. This mode allows policy authors to test and evaluate IPE policy without it affecting their programs. When the mode is changed, a 1404 AUDIT_MAC_STATUS will be reported. This patch adds the following audit records: audit: MAC_STATUS enforcing=0 old_enforcing=1 auid=4294967295 ses=4294967295 enabled=1 old-enabled=1 lsm=ipe res=1 audit: MAC_STATUS enforcing=1 old_enforcing=0 auid=4294967295 ses=4294967295 enabled=1 old-enabled=1 lsm=ipe res=1 The audit record only emit when the value from the user input is different from the current enforce value. Signed-off-by: Deven Bowers <deven.desai@linux.microsoft.com> Signed-off-by: Fan Wu <wufan@linux.microsoft.com> Signed-off-by: Paul Moore <paul@paul-moore.com>
Diffstat (limited to 'security/ipe/eval.c')
-rw-r--r--security/ipe/eval.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/security/ipe/eval.c b/security/ipe/eval.c
index b99ed4bb09cf6..b14c957685501 100644
--- a/security/ipe/eval.c
+++ b/security/ipe/eval.c
@@ -18,6 +18,7 @@
struct ipe_policy __rcu *ipe_active_policy;
bool success_audit;
+bool enforce = true;
#define FILE_SUPERBLOCK(f) ((f)->f_path.mnt->mnt_sb)
@@ -108,6 +109,7 @@ int ipe_evaluate_event(const struct ipe_eval_ctx *const ctx)
enum ipe_action_type action;
enum ipe_match match_type;
bool match = false;
+ int rc = 0;
rcu_read_lock();
@@ -159,9 +161,12 @@ eval:
rcu_read_unlock();
if (action == IPE_ACTION_DENY)
- return -EACCES;
+ rc = -EACCES;
- return 0;
+ if (!READ_ONCE(enforce))
+ rc = 0;
+
+ return rc;
}
/* Set the right module name */
@@ -172,3 +177,5 @@ eval:
module_param(success_audit, bool, 0400);
MODULE_PARM_DESC(success_audit, "Start IPE with success auditing enabled");
+module_param(enforce, bool, 0400);
+MODULE_PARM_DESC(enforce, "Start IPE in enforce or permissive mode");