永久关闭SELinux

当我们自己编写native serivce时,如果打开SELinux,往往需要耗费大量无意义的时间在添加权限上面。所以在对系统安全等级要求不是非常严苛的情况下我们可以关闭SELinux。补丁如下:

diff --git a/system/core/init/init.cpp b/system/core/init/init.cpp
index be1c232..adda5d8 100755
--- a/system/core/init/init.cpp
+++ b/system/core/init/init.cpp
@@ -535,11 +535,11 @@ static void selinux_init_all_handles(void)
 enum selinux_enforcing_status { SELINUX_DISABLED, SELINUX_PERMISSIVE, SELINUX_ENFORCING };
 
 static selinux_enforcing_status selinux_status_from_cmdline() {
-    selinux_enforcing_status status = SELINUX_ENFORCING;
+    selinux_enforcing_status status = SELINUX_DISABLED;
 
     import_kernel_cmdline(false, [&](const std::string& key, const std::string& value, bool in_qemu) {
         if (key == "androidboot.selinux" && value == "permissive") {
-            status = SELINUX_PERMISSIVE;
+            status = SELINUX_DISABLED;
         }
 		else if (key == "androidboot.selinux" && value == "disabled") {
             status = SELINUX_DISABLED;
@@ -557,17 +557,17 @@ static bool selinux_is_disabled(void)
             // via the kernel command line "selinux=0".
             return true;
         }
-        return selinux_status_from_cmdline() == SELINUX_DISABLED;
+        return true;
     }
 
-    return false;
+    return true;
 }
 static bool selinux_is_enforcing(void)
 {
     if (ALLOW_DISABLE_SELINUX) {
         return selinux_status_from_cmdline() == SELINUX_ENFORCING;
     }
-    return true;
+    return false;
 }
 
 int selinux_reload_policy(void)

当然如果对系统安全要求很严格,那就需要按照使用的权限逐个添加。这个后面再更新。

发布于 2020-12-13 19:21