在Android上临时禁用或修改SELinux

时间:2013-10-06 09:47:36

标签: android selinux

我是Android的 root -app的开发者。

可悲的是,现在某些设备/ ROM上强制执行 -mode中有 SELinux ,并阻止了我的应用的某些操作。

因为这是一个root-app,用户正在授予我root权限!

现在,SELinux阻止了我的一些行动,我需要为此找到解决方案。

我试图暂时禁用SELinux

setenforce permissive -> no failure, but getenforce still returns "Enforcing"
cat 0 > /sys/fs/selinux/enforce -> no failure, but getenforce still returns "Enforcing"

我想在运行时编辑 sepolicy -file以允许阻止的命令并触发重新加载它,但我不确定是否&这怎么可行,也不是一个好主意。

谁有更多的提示或资源给我?

5 个答案:

答案 0 :(得分:10)

您可以使用SuperSU应用中的supolicy,查看链接,了解详细说明的时间和方式。

简而言之:

  • 通过检查审核消息,找出SELinux阻止某些内容的原因,例如: dmesg | grep "audit"
  • 创建允许阻止操作的allow ...规则。它们与SELinux * .te文件中的“允许”规则类似(相同?)。
  • 在root shell中运行supolicy --live "allow ..."并检查操作现在是否成功。如果没有,请扩展您的“允许”规则。您可以在一次supolicy来电中指定多个“允许”规则。

请注意supolicy是一项昂贵的操作,因此请务必只调用一次。

如果您不想依赖Chainfire的SuperSU,您可以尝试sepolicy-inject。我自己没有测试过。

答案 1 :(得分:2)

我一直试图在Android 4.3上禁用SELinux一段时间了,这就是我想出来的。

在Samsung S4 Android 4.3上,setenforce 0将更改为Permissive模式。

在Samsung Note 3 Android 4.3上,setenforce 0不会更改SELinux状态。

我尝试过Nexus 4 Android 4.3,但默认情况下是Permissive模式

答案 2 :(得分:2)

使用文本编辑器搜索" selinux"在第一个目录的系统文件夹中编辑Point文件。
如果您看到 enable_selinux = 1 之类的内容,请将其更改为0,如果要禁用,请将其更改为反之,更改将在重新启动或启动后应用。

在我的情况下,他们已经禁用了它,但它在评论栏中

  

#ro.boot.selinux =禁

以#开头的行是一条评论,它不会改变任何内容。同样,您可以打开/关闭多用户帐户,系统更新。

我的设备制造商已禁用系统更新。

答案 3 :(得分:1)

您可以下载应用名称selinux mod changer。它不在Play商店中,因此您可以从Chrome或您选择的任何其他浏览器下载它。应用程序只需要root权限就可以试试。

答案 4 :(得分:0)

如果您具有超级用户权限,请运行su 0 setenforce 0以更改为Permissive模式:

// Set SELinux to permissive
private static final String COMMAND = "su 0 setenforce 0"; 
try {
  Runtime.getRuntime().exec(COMMAND);
} catch (IOException e) {
  e.printStackTrace();
}