我是 Android 的 root-应用程序的开发人员。
遗憾的是,现在在某些设备/ROM 上,SELinux 处于 enforce 模式并阻止我的应用执行某些操作。
因为这是一个 root 应用程序,所以用户授予我 root 访问权限!
现在,SELinux 阻止了我的一些操作,我需要为此找到解决方案。
我尝试通过
暂时禁用 SELinuxsetenforce permissive -> no failure, but getenforce still returns "Enforcing"
echo 0 > /sys/fs/selinux/enforce -> no failure, but getenforce still returns "Enforcing"
我想在运行时编辑 sepolicy-文件以允许被阻止的命令并触发重新加载它,但我不确定这是否以及如何工作,也不是这不是个好主意。
谁有更多的提示或资源给我?
最佳答案
您可以使用 supolicy
从 SuperSU 应用程序中,查看链接以了解何时以及如何调用它的详细说明。
简而言之:
- 通过检查审计消息找出 SELinux 阻止某些内容的原因,例如
dmesg | grep "审计"
- 创建一个允许被阻止操作的
allow ...
规则。它们与 SELinux *.te 文件中的“允许”规则相似(相同?)。 - 在 root shell 中运行
supolicy --live "allow ..."
并检查操作现在是否成功。如果没有,请扩展您的“允许”规则。您可以在单个supolicy
调用中指定多个“允许”规则。
请注意,supolicy
是一项昂贵的操作,因此请确保只调用一次。
如果你不想依赖 Chainfire 的 SuperSU,你可以试试 sepolicy-inject
.我自己没有测试。
关于android - 临时禁用或修改 Android 上的 SELinux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19207479/