我是Android的 -app上的开发人员。
可悲的是,现在在某些设备/ROM上,强制模式下有 SELinux ,它阻止了我的应用程序执行某些操作。
因为这是一个root应用程序,所以用户授予我root访问权限!
现在,SELinux阻止了我的某些操作,我需要为此找到解决方案。
我试图通过以下方式暂时禁用SELinux

setenforce permissive -> no failure, but getenforce still returns "Enforcing"
echo 0 > /sys/fs/selinux/enforce -> no failure, but getenforce still returns "Enforcing"
我想在运行时编辑 sepolicy -file的想法,以允许被阻止的命令并触发它的重新加载,但是我不确定这是否可行以及如何工作,也不是一个好主意。
谁对我有更多提示或资源?

最佳答案

您可以在SuperSU应用程序中使用 supolicy ,请参阅链接以获取详细说明,以及何时以及如何调用它。

简而言之:

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

  • 请注意,supolicy是一项昂贵的操作,因此请确保仅调用一次。

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

    关于android - 暂时在Android上禁用或修改SELinux,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19207479/

    10-12 03:41