SeAndroid上指纹系统的权限说明
2015-06-04 14:27
531 查看
SeAndroid上指纹系统的权限说明
1.什么是SeAndroid
SEAndroid 美国国家安全局在2012年1月发布SEAndroid开源项目和代码,使Android系统支持强制访问控制(Mandatory Access Control)以增加系统安全性。
Android从4.4开始支持SeAndroid,并默认关闭。
Android5.0及以上默认开启SeAndroid,adb shell下使用命令
#getenforce
查看当前的Se状态,使用命令
#setenforce 0
使当前系统Se处于permissive状态,该状态下,违反SeAndroid规则的越权资源访问将不予拒绝执行,系统仅发出日志输出。
使用命令
setenforce 1
使系统处于enforcing状态下,该状态下,违反SeAndroid规则的越权资源访问均被拒绝。
以上的设置命令时暂时关闭,系统重启后将被恢复。
系统启动参数中加入[selinux=enforcing | selinux=permissive | selinux=disable]可以永久的设置系统SeAndroid状态,或者将命令seenforce n 写入系统启动脚本中。
2.SeAndroid的策略
SeAndroid除了传统的DAC(自主访问控制),另外加了一层权限检查MAC(强制访问控制),任何进程想在SeAndroid中干任何事情,都必须先在【安全策略配置文件】中赋予权限。范式美柚出现在安全策略配置文件中的权限,进程就没有该权限,操作时均被操作系统拒绝。
3.指纹系统的DAC控制
应用程序app以用户权限运行,则需要赋予其设备访问权限。具体操作方法:
修改Android源码下
./system/core/rootdir/ueventd.rc
添加
/dev/madev0 0666 root root
权限位0666可以根据需要调整
4.指纹系统的MAC控制一
Demo演示程序运行时(使用adb install 安装 或放入系统image中),进程运行在untrusted_app域中,如需获得权限。操作如下:
4.1.修改Android源码下
./external/sepolicy/untrusted_app.te
在type untrusted_app,domain;(untrusted_app定义语句)之后
添加语句
allow untrusted_app device:chr_file {open read write ioctl};
“{}”中为所赋权限,该权限可以根据需要配置。chr_file所拥有的权限可以参照源码下
./out/target/product/tiny4412/obj/ETC/sepolicy_intermediates/policy.conf
或者
./external/sepolicy/access_vectors
中关于class chr_file的权限说明(class chr_file继承了file,定义为common file)。
4.2修改Android源码下
./external/sepolicy/domain.te
使用“#”注释掉行
neverallow {domain -unconfieddomain} -ueventd -recovery} device:chr_file {open read write};
否则nerverallow将进行权限检查,检察到冲突无法编译通过。
5.指纹系统的MAC控制二
对于集成入系统的应用程序来说,进程可能运行在plat-form_app域中。如无权限(测试中),操作如下:
5.1.修改Android源码下:
.external/sepolicy/platform_app.te
在type platform_app, domain;(platfomr_app定义语句)之后添加:
allow platform_app device:chr_file {open read write ioctl};
platform_app域无neverallow chr_file权限校验。
6.说明
6.1权限赋予方法同样适用于其他系统或应用
6.2 为应用赋予DAC权限
直接修改ueventd.rc文件即可。也可以解压后修改ramdisk.img中的uevent.rc后重新打包。
6.3 为应用赋予MAC权限时的一般步骤:
确定目标应用执行进程所处的域(domain),使用[ ps -Z ]命令查看,形式诸如:
u:r:untrusted_app:s0 u0_a13 4574 1648 ma.fprint
该进程所处的域即为untruste_app*。
为该域赋予设备文件的读写权(对于其他类型的应用,赋予相应的操作权,例如process 的signal),在域定义后使用
allow source_type target_type:class perm_set
语法赋权。
编译产生权限冲突,注释产生冲突的权限检查语句
neverallow source_type target_type:class perm_set
不建议将访问硬件设备的应用进程放在untrusted_app,这样会导致其他第三方进程也将获得权限。
版本补充:
由于直接修改域赋予device的权限,会导致该域拥有所有device权限,可以使用一下办法创建一个文件域
1.2 修改Android源码下
./external/sepolicy/device.te
在device type定义之后增加【type xxx_device,dev_type】
1.3 修改Android源码下
./external/sepolicy/file_contexts
在system files定义前加 【/dev/[node_name] u:object_r:xxx_device:s0】
1.什么是SeAndroid
SEAndroid 美国国家安全局在2012年1月发布SEAndroid开源项目和代码,使Android系统支持强制访问控制(Mandatory Access Control)以增加系统安全性。
Android从4.4开始支持SeAndroid,并默认关闭。
Android5.0及以上默认开启SeAndroid,adb shell下使用命令
#getenforce
查看当前的Se状态,使用命令
#setenforce 0
使当前系统Se处于permissive状态,该状态下,违反SeAndroid规则的越权资源访问将不予拒绝执行,系统仅发出日志输出。
使用命令
setenforce 1
使系统处于enforcing状态下,该状态下,违反SeAndroid规则的越权资源访问均被拒绝。
以上的设置命令时暂时关闭,系统重启后将被恢复。
系统启动参数中加入[selinux=enforcing | selinux=permissive | selinux=disable]可以永久的设置系统SeAndroid状态,或者将命令seenforce n 写入系统启动脚本中。
2.SeAndroid的策略
SeAndroid除了传统的DAC(自主访问控制),另外加了一层权限检查MAC(强制访问控制),任何进程想在SeAndroid中干任何事情,都必须先在【安全策略配置文件】中赋予权限。范式美柚出现在安全策略配置文件中的权限,进程就没有该权限,操作时均被操作系统拒绝。
3.指纹系统的DAC控制
应用程序app以用户权限运行,则需要赋予其设备访问权限。具体操作方法:
修改Android源码下
./system/core/rootdir/ueventd.rc
添加
/dev/madev0 0666 root root
权限位0666可以根据需要调整
4.指纹系统的MAC控制一
Demo演示程序运行时(使用adb install 安装 或放入系统image中),进程运行在untrusted_app域中,如需获得权限。操作如下:
4.1.修改Android源码下
./external/sepolicy/untrusted_app.te
在type untrusted_app,domain;(untrusted_app定义语句)之后
添加语句
allow untrusted_app device:chr_file {open read write ioctl};
“{}”中为所赋权限,该权限可以根据需要配置。chr_file所拥有的权限可以参照源码下
./out/target/product/tiny4412/obj/ETC/sepolicy_intermediates/policy.conf
或者
./external/sepolicy/access_vectors
中关于class chr_file的权限说明(class chr_file继承了file,定义为common file)。
4.2修改Android源码下
./external/sepolicy/domain.te
使用“#”注释掉行
neverallow {domain -unconfieddomain} -ueventd -recovery} device:chr_file {open read write};
否则nerverallow将进行权限检查,检察到冲突无法编译通过。
5.指纹系统的MAC控制二
对于集成入系统的应用程序来说,进程可能运行在plat-form_app域中。如无权限(测试中),操作如下:
5.1.修改Android源码下:
.external/sepolicy/platform_app.te
在type platform_app, domain;(platfomr_app定义语句)之后添加:
allow platform_app device:chr_file {open read write ioctl};
platform_app域无neverallow chr_file权限校验。
6.说明
6.1权限赋予方法同样适用于其他系统或应用
6.2 为应用赋予DAC权限
直接修改ueventd.rc文件即可。也可以解压后修改ramdisk.img中的uevent.rc后重新打包。
6.3 为应用赋予MAC权限时的一般步骤:
确定目标应用执行进程所处的域(domain),使用[ ps -Z ]命令查看,形式诸如:
u:r:untrusted_app:s0 u0_a13 4574 1648 ma.fprint
该进程所处的域即为untruste_app*。
为该域赋予设备文件的读写权(对于其他类型的应用,赋予相应的操作权,例如process 的signal),在域定义后使用
allow source_type target_type:class perm_set
语法赋权。
编译产生权限冲突,注释产生冲突的权限检查语句
neverallow source_type target_type:class perm_set
不建议将访问硬件设备的应用进程放在untrusted_app,这样会导致其他第三方进程也将获得权限。
feedback:guq@microarray.com.cn
版本补充:
由于直接修改域赋予device的权限,会导致该域拥有所有device权限,可以使用一下办法创建一个文件域
1.2 修改Android源码下
./external/sepolicy/device.te
在device type定义之后增加【type xxx_device,dev_type】
1.3 修改Android源码下
./external/sepolicy/file_contexts
在system files定义前加 【/dev/[node_name] u:object_r:xxx_device:s0】
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories