SELinux 设置为永久性强制模式的方法

30次阅读
没有评论

问题描述

在刷入自定义ROM后,发现SELinux默认设置为Permissive模式而非Enforcing模式。使用adb shell setenforce 1可以使SELinux变为强制模式,但重启后会自动恢复为Permissive模式。

解决方案

注意:此操作涉及对系统文件进行修改,可能会影响系统的稳定性和安全性,请谨慎操作,并确保备份重要数据。

方案1:修改内核启动参数

步骤1:检查当前内核启动参数

cat /proc/cmdline

查看输出结果中是否包含androidboot.selinux=permissive参数。

步骤2:修改内核启动参数

为了使SELinux在每次启动时都处于强制模式,需要从内核启动参数中移除androidboot.selinux=permissive。具体操作如下:

  1. 拆分boot.img
    使用工具如AIK(Android Image Key)或MagiskBoot进行拆包操作。具体操作步骤可以参考以下链接:
  2. AIK
  3. MagiskBoot

  4. 编辑boot.img
    打开拆包后的boot.img文件,找到并修改内核启动参数,移除androidboot.selinux=permissive参数。

  5. 重新打包boot.img
    修改完成后,重新打包boot.img文件。

  6. 刷写boot.img
    使用fastboot工具刷写新的boot.img文件到设备中:
    shell
    fastboot flash boot boot.img

步骤3:验证更改

重启设备后,再次使用cat /proc/cmdline命令检查内核启动参数,确认已经移除了androidboot.selinux=permissive参数。然后使用setenforce 1命令使SELinux变为强制模式,确保其不会自动恢复为Permissive模式。

方案2:使用Kernel Selinux Patcher

如果不想手动拆包和打包boot.img文件,可以尝试使用Kernel Selinux Patcher工具。该工具可以帮助用户直接修改内核启动参数,使其在每次启动时都处于强制模式。

  1. 下载并安装Kernel Selinux Patcher
    访问Kernel Selinux Patcher GitHub页面下载并安装该工具。

  2. 使用Kernel Selinux Patcher修改启动参数
    按照工具的指引,修改内核启动参数,移除androidboot.selinux=permissive参数。

  3. 刷写修改后的boot.img
    完成修改后,按照上述步骤刷写新的boot.img文件到设备中。

注意事项

  • 在执行上述操作之前,请确保您已经备份了重要的数据,以防万一出现意外情况。
  • 自定义ROM通常为userdebug构建,可能缺少完整的策略文件,因此在修改内核启动参数后,务必确保设备上有正确的sepolicy文件,否则可能导致设备进入启动循环。
  • 如果不熟悉这些操作,建议寻求专业人士的帮助。

正文完