比如在展锐sc9863a平台(其它芯片平台应该也是这个地方的这个文件)修改文件为:
system/core/init/selinux.cpp,增加//add this line 部分的内容
bool IsEnforcing() {
return false; //add this line
{
int fd(open("/mboot/selinux", O_RDONLY | O_CLOEXEC | O_BINARY));
if (fd != -1) {
char v = 0xff;
if (read(fd, &v, 1) < 0)
PLOG(ERROR) << "Failed to read /mboot/selinux";
close(fd);
LOG(WARNING) << "/mboot/selinux is " << v;
return v == '1';
}
}
if (ALLOW_PERMISSIVE_SELINUX) {
return StatusFromCmdline() == SELINUX_ENFORCING;
}
return true;
}
注意,在关闭此功能后,在Log中也能看到avc的报错,但由于getenforce值是
Permissive,
而不是Enforcing,
虽然报AVC的错,但实际上不拦截,所以涉及到这方面的权限实际上是给到的了。