root权限后,不要忘了还有selinux
下面的例子运行在中兴android 5.0手机上。
当我们使用root权限的python去创建socket监听端口8088时,selinux向kmsg输出了下面的记录

python-android5 对 socket 的操作 create, setopt, bind, listen等都是denied不允许的,因为目标(target)需要权限在tcontext=u:r:init:s0,但是我们的python运行在root权限下,所以scontext=u:r:init:s0满足了tcontext,我们的操作被允许permissive=1,但不是selinux子系统所希望的,并记录在kmsg。
我们既然成功在8088端口上监听了,那么是否就等同于可以接收incoming连接呢,可能你会想到防火墙过滤,我们就看一下防火墙策略 (8088端口放开了)。

那么我们向上面打开的监听端口8088发起连接,会怎么样呢?结果失败了,请看kmsg输出。

防火墙netd以scontext=u:r:netd:s0,应该是想向端口8088的socket的backlog写入,但是无奈操作socket需要权限tcontext=u:r:init:s0,防火墙对listen的sokcet的操作 { read write }被selinux子系统拒绝 permissive=0,selinux向kmsg输出日志记录。防火墙不是运行在高权限下,即使你的程序提升到root权限了,也无能为力。换句话说,如果你的程序依赖了其它进程的服务,那么你所依赖的进程的selinux权限,也将制约着你的程序。这时只好关闭selinux,但是这样就比较不安全了。
关闭selinux后,我们再次向8088端口发起连接,结果成功了,看kmsg输出。

首先我们的python程序在root权限下创建了socket,同时没有权限的防火墙netd也随selinux子系统的关闭,对socket的操作被允许,这一切都是selinux子系统所不希望的,必须在kmsg记录下日志。后面就是正常的tcp建立连接三次握手,selinux同时也在kmsg记录下日志,日志输出如下。

又一例就是screencap,你在root权限下也不能截屏。

selinux却在kmsg输出记录。

解决就是关闭selinux,通过setenforce 或 /sys/fs/selinux。这样很不安全,另外就是使用supolicy修改个别政策。
root权限后,不要忘了还有selinux的更多相关文章
- 取得root权限后怎么删除程序
不知道这个算什么教程,随便一个分类吧,管理员不要扣我分啊,我也是为大家服务嘛,不对的话可以帮我处理下) 最近也学习了下,把我的X8(国行2.1版)给root了,怎么root,论坛里有很多帖子,这里就不 ...
- 获得了Root权限后Read-only file system
获得了Root权限后,adb shell进入文件系统,有时仍然不能对系统文件夹进行写操作,典型的如删除/system/app下的Apk, 例如系统报:rm failed for xxx.apk, Re ...
- ADB工具 获取ROOT权限及复制文件方法
adb push d:\tm3_sqlit.db data/zouhao/tm3_sqlit.dbadb pull data/zouhao/tm3_sqlit.db d:\tm3_sqlit.db a ...
- Ubuntn16.04.3配置root权限及启用root用户
景 如果你是测试环境需要在VM中装了Ubuntn,安装完成后会创建一个Ubuntn的默认用户,默认用户因为权限的问题很多系统的配置文件不可以打开,默认是只读状态. 那么可以通过以下两种方式切换到roo ...
- Android获取Root权限之后的静默安装实现代码示例分析
转:http://blog.csdn.net/jiankeufo/article/details/43795015 Adroid开发中,我们有时会遇到一些特殊功能的实现,有些功能并没有太高技术难度,但 ...
- 以普通用户启动的Vim如何保存需要root权限的文件
在Linux上工作的朋友很可能遇到过这样一种情况,当你用Vim编辑完一个文件时,运行:wq保存退出,突然蹦出一个错误: E45: 'readonly' option is set (add ! to ...
- [转] 以普通用户启动的Vim如何保存需要root权限的文件
[转] 以普通用户启动的Vim如何保存需要root权限的文件 在Linux上工作的朋友很可能遇到过这样一种情况,当你用Vim编辑完一个文件时,运行:wq保存退出,突然蹦出一个错误: E45: 'rea ...
- Android权限说明 system权限 root权限
原文链接:http://blog.csdn.net/rockwupj/article/details/8618655 Android权限说明 Android系统是运行在Linux内核上的,Androi ...
- user版本如何永久性开启adb 的root权限【转】
本文转载自:http://blog.csdn.net/o0daxu0o/article/details/52933926 [Solution]* adb 的root 权限是在system/core/a ...
随机推荐
- vue系列---理解Vue中的computed,watch,methods的区别及源码实现(六)
_ 阅读目录 一. 理解Vue中的computed用法 二:computed 和 methods的区别? 三:Vue中的watch的用法 四:computed的基本原理及源码实现 回到顶部 一. 理解 ...
- ES常用操作备忘
格式:<REST Verb>/<Index>/<Type>/<ID> 集群健康:curl -u lases:1fw@2soc#3vpn -XGET 'l ...
- javascript核心基础总结
对<深入理解javascript原型和闭包系列>,<深入理解javascript系列>和<javascript深入系列>的学习总结 词法作用域 作用域就是,程序查找 ...
- day04整理
目录 内容回顾 变量 什么是变量 变量的组成 变量名的命名规范 注释 单行注释 多行注释 turtle库的使用 一.数据类型基础 一.数字类型 (一)整形 (二)浮点型 二.字符串类型 (一)作用:姓 ...
- 使用Java8 Stream API对Map按键或值进行排序
一.什么是Java 8 Stream 使用Java 8 Streams,我们可以按键和按值对映射进行排序.下面是它的工作原理: 将Map或List等集合类对象转换为Stream对象 使用Streams ...
- Andriod项目结构
在Android Studio第一次创建一个项目,点击左侧的Project选项卡,在Project窗口下有几个不同的视图,默认的是名为Android的视图: 对于大部分的开发工作,我们只要在Andro ...
- 两种unity双击事件
有时候需要用到双击事件,而unity未提供双击控件,在此提供两种双击事件方法,进攻参考: 1)此方法为通过unityevent来实现 首先新建image(或其他不带点击事件的控件),添加如下脚本,然后 ...
- sql 经典查询50题 思路(一)
因为需要提高一下sql的查询能力,当然最快的方式就是做一些实际的题目了.选择了这个sql的50题,这次大概做了前10题左右,把思路放上来,也是一个总结. 具体题目见: https://zhuanlan ...
- char 、signed char、unsigned char
看如下代码: char c = -1; signed char sc = -1; unsigned char uc = -1; printf("c=%d, sc=%d, uc=%d, cx= ...
- Bash 通配符、正则表达式、扩展正则表达式
BASH中的通配符(wildcard) *:任意长度的任意字符. ?:任意单个字符 []:匹配范围 [^]:排除匹配范围 [:alnum:]:所有字母和数字 [:alpha:]:所有字母 [:digi ...