22

我是Android的root应用程序的开发人员。

可悲的是,现在在某些设备/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 -文件以允许被阻止的命令并触发重新加载它的想法,但我不确定这是否以及如何工作,也不是一个好主意。

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

4

5 回答 5

13

您可以supolicy从 SuperSU 应用程序中使用,有关何时以及如何调用它的详细说明,请参见链接。

简而言之:

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

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

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

于 2015-11-07T17:53:18.570 回答
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模式

于 2013-10-28T04:25:13.370 回答
2

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

同样,您可以打开/关闭多用户帐户,系统更新。

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

于 2017-07-21T07:59:30.210 回答
1

如果您具有 root 访问权限,请运行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();
}
于 2014-11-21T16:25:35.350 回答
1

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

于 2015-06-13T05:35:46.993 回答