激活SEAndroid(二)

本文探讨了SEAndroid环境下su命令在不同进程域间的权限问题,并通过修改shell.te文件解决了运行dmesg时遇到的klogctl:Operationnotpermitted错误。详细分析了Android与Linux下su程序的差异,最终通过调整SELinux策略使得问题得到解决。

我想看看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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值