Android kk 之前,要读system/bin/logcat 只需要READ_LOG的权限就可以了。
Android kk 之后 , Google正式有限制的启用SELinux来增强安全防患。但是kk版本之后Google只是有限制的启用SELinux,即只针对netd, installd, zygote, vold以及他们直接fork出的child process 使用enforcing mode(强制模式,会对访问进行拒绝) , 但不包括zygote fork的普通app。
Android L 之后 , Google全面开启SELinux,所有的权限都使用enforcing mode。
另外为了限制user版本root使用权限,针对 su 有做特殊的处理(Android KK 之后就已经对 user版本的root有了严重的限制)。
这几天在做Android抓取系统log的APK,用Runntime获取su的process去execute一个logcat命令 的时候报了avc:dined的错误。
后来发现就是selinux的限制引起的。
于是就想通过添加系统服务的方式,启动系统服务区执行一个shell然后在通过shell去执行logcat。
然后就报错被告知我的系统服务被selinux告知需要一个domain.现在正通过添加selinux的domain和规则来尝试。
如果成功将在下个博客中添加 系统服务的添加,以及selinux相关的东西。
已搞定。详见下一篇博客。