Android L APP 如何获取sys file system 中节点的写权限
2015-09-11 19:50
513 查看
[Description]
Android L APP 如何获取sys file system 中节点的写权限
[Keyword]
L SELinux sys write
[Android Version]
Version >= android 5.0
[Solution]
Google 默认禁止app , 包括system app, radio app 等直接写/sys 下面的文件, 认为这个是有安全风险的。如果直接放开SELinux 权限, 会导致CTS 无法通过.
通常遇到此类情况,你有两种做法:
(1). 通过system server service 或者 init 启动的service 读写, 然后app 通过binder/socket 等方式连接APP 访问. 此类安全可靠, 并且可以在service 中做相关的安全审查, 推崇这种方法.
(2). 修改对应节点的SELinux Security Label, 为特定的APP, 如system app, radio, bluetooth 等内置APP开启权限, 但严禁为untrsted app 开启权限. 具体的做法下面以 system app 控制/sys/class/leds/lcd-backlight/brightness 来说明.
1. 在device/mediatek/common/sepolicy/file.te 定义brightness SELinux type
type sys_lcd_brightness_file, fs_type,sysfs_type;
2. 在device/mediatek/common/sepolicy/file_contexts 绑定 brightness 对应的label, 注意对应的节点是实际节点,而不是链接.以及整个目录路径中也绝不能包含链接(无数同仁有犯这个错误,特意提醒)
/sys/devices/platform/leds-mt65xx/leds/lcd-backlight/brightness u:object_r:sys_lcd_brightness_file:s0
3. 在device/mediatek/common/sepolicy/system_app.te 中申请权限.
allow system_app sys_lcd_brightness_file:file rw_file_perms;
4. 为其它的process 申请相关的权限,如system_server, 在device/mediatek/common/sepolicy/system_server.te
allow system_server sys_lcd_brightness_file:file rw_file_perms;
原则上我们都推崇使用第一种方式处理.
Android L APP 如何获取sys file system 中节点的写权限
[Keyword]
L SELinux sys write
[Android Version]
Version >= android 5.0
[Solution]
Google 默认禁止app , 包括system app, radio app 等直接写/sys 下面的文件, 认为这个是有安全风险的。如果直接放开SELinux 权限, 会导致CTS 无法通过.
通常遇到此类情况,你有两种做法:
(1). 通过system server service 或者 init 启动的service 读写, 然后app 通过binder/socket 等方式连接APP 访问. 此类安全可靠, 并且可以在service 中做相关的安全审查, 推崇这种方法.
(2). 修改对应节点的SELinux Security Label, 为特定的APP, 如system app, radio, bluetooth 等内置APP开启权限, 但严禁为untrsted app 开启权限. 具体的做法下面以 system app 控制/sys/class/leds/lcd-backlight/brightness 来说明.
1. 在device/mediatek/common/sepolicy/file.te 定义brightness SELinux type
type sys_lcd_brightness_file, fs_type,sysfs_type;
2. 在device/mediatek/common/sepolicy/file_contexts 绑定 brightness 对应的label, 注意对应的节点是实际节点,而不是链接.以及整个目录路径中也绝不能包含链接(无数同仁有犯这个错误,特意提醒)
/sys/devices/platform/leds-mt65xx/leds/lcd-backlight/brightness u:object_r:sys_lcd_brightness_file:s0
3. 在device/mediatek/common/sepolicy/system_app.te 中申请权限.
allow system_app sys_lcd_brightness_file:file rw_file_perms;
4. 为其它的process 申请相关的权限,如system_server, 在device/mediatek/common/sepolicy/system_server.te
allow system_server sys_lcd_brightness_file:file rw_file_perms;
原则上我们都推崇使用第一种方式处理.
相关文章推荐
- iOS开发工程师笔试基础题
- Android UDP通信
- 小小菜之Cocos2d-x游戏开发旅程——项目实例:飞机大战(1)
- iosiOS学习总结----九宫格搭建方法
- Android笔记(二十七) Android中的动态广播和静态广播
- UIWebView中Html中用JS调用OC方法及OC执行JS代码
- [转][Android]Android OTA 升级
- iOS 开发之tag,视图图层间的关系
- iOS 类目,延展,协议
- Android client和服务器JSP互传中国
- 从零开始自学Swift(六)
- Android基础 学习之Dialog
- 发布app
- 微信验证码
- iOS登陆各种验证(持续更新)
- iOS每日一记之————AlertView的BUG解决 限制textField的字数长度 ScrollerView的上划键盘下去
- 聚合数据Android SDK 短信验证演示示例
- pb datawindow中获取datawindowchild的sql以及dataobject
- iOS动态计算Label的宽高
- NullReferenceException: Object reference not set to an instance of an object