激活SEAndroid(二)

来源:互联网 发布:arena仿真软件下载 编辑:程序博客网 时间:2024/05/18 02:10

我想看看Kernel log,但是当setenforce 1之后,再输入dmesg,就出现:

klogctl:Operation not permitted

问题应该是出在su之后shell所处的域的权限。我查了一下su.te,有下面这样的语句:

domain_auto_trans(shell, su_exec, su)

unconfined_domain(su)

也就是说,在adbd的shell中键入su命令后,应该在su这个域中,而su这个域是不受限制的。这就和实际观察到的现象不一样了。继续观察发现:

su(4063, init_shell) -> /system/xbin/su(4057, init) -> /init(1, init)

su进程的进程号是4063,它的selinux域是init_shell,它的父进程是/system/xbin/su……

另外又有:

su(4053, su) -> /system/bin/sh(3286, shell) ->/sbin/adbd(1945, adbd) ->/init(1, init)

不知道Android下的su程序怎么编写的,搞出了两条线。以后有时间再好好查查。为了对比,我又查看了一下Linux的su:

bash(15592) ->su(15585) ->bash(15442) ->login(4139) -> init(1)

Linux只有一条进程继承线。SEAndroid的su.te显然没有适应Android的实际。

简单解决要看kernel log的问题,我在shell.te中加了:

unconfined_domain(init_shell)

然后就可以正常运行dmesg了。但是kernel log中并没有我期望的selinux信息,我还是不知道为什么setenforce之后会“死机”。我只是在logcat中看到了:

D/OpenGLRenderer(2556): GL error from OpenGLRenderer: 0x505

E/OpenGLRenderer(2556): Out of memory

看起来时显示相关的库出了问题。

原创粉丝点击