我是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以允许阻止的命令并触发重新加载它,但我不确定是否&这怎么可行,也不是一个好主意。
谁有更多的提示或资源给我?
答案 0 :(得分:10)
您可以使用SuperSU应用中的supolicy
,查看链接,了解详细说明的时间和方式。
简而言之:
dmesg | grep "audit"
allow ...
规则。它们与SELinux * .te文件中的“允许”规则类似(相同?)。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();
}