SELinux配置property
2016-03-23 21:23
465 查看
property是android常用的一个TOOL(可以理解为TOOL),使用起来非常方便,不管是Java层还是c++层,都可以使用property。
system\core\init\property_service.c
AID和UID有如下对应关系:
system\core\include\private\android_filesystem_config.h
android5.X之后,在system\core\init\property_service.c以及其他文件,没有看到对property_perms的定义。
在TvSettings.apk写demo验证:
external\sepolicy\property_contexts
在上一篇文章<SELinux app配置>:/article/8046824.html
有介绍,对于app,只有domain为system_app的process才可以进行prop相关操作。
因此当我们需要客制化property前缀试,需要在property_contexts进行相关的配置。
例如:
其他domain,比如surfaceflinger.te中配置:
# Set properties.
allow surfaceflinger system_prop:property_service set;
allow surfaceflinger ctl_bootanim_prop:property_service set;
也可以对prop进行设置,所以当其他的domain process无法设置prop时,可以添加allow语句添加权限。
总结:
SEAndroid对property的配置,和kikat4.4版本的AID配置一样,对应的前缀,指定对应的SContext即可。以及当其他domain的process需要设置property时,可以通过allow语句添加权限(不确定是否会违反neverallow).
1.非SEAndroid property限定
android 5.X之前,例如kikat4.4 :system\core\init\property_service.c
property_perms[] = {
{ "ril.", AID_RADIO, 0 }, { "gsm.", AID_RADIO, 0 }, { "persist.radio", AID_RADIO, 0 }, { "net.dns", AID_RADIO, 0 }, { "sys.usb.config", AID_RADIO, 0 }, { "net.", AID_SYSTEM, 0 }, { "dev.", AID_SYSTEM, 0 }, { "runtime.", AID_SYSTEM, 0 }, { "hw.", AID_SYSTEM, 0 }, { "sys.", AID_SYSTEM, 0 }, { "sys.powerctl", AID_SHELL, 0 }, { "service.", AID_SYSTEM, 0 }, { "wlan.", AID_SYSTEM, 0 },property根据AID不同,只能操作指定前缀的属性。比如gsm.* 只能是AID_RADIO process可以set & get,其他USER则无法设置此前缀的property。
AID和UID有如下对应关系:
system\core\include\private\android_filesystem_config.h
#define AID_SYSTEM 1000 /* system server */ #define AID_RADIO 1001 /* telephony subsystem, RIL */ #define AID_BLUETOOTH 1002 /* bluetooth subsystem */ #define AID_GRAPHICS 1003 /* graphics devices */ #define AID_INPUT 1004 /* input devices */ #define AID_AUDIO 1005 /* audio devices */ #define AID_CAMERA 1006 /* camera devices */ #define AID_LOG 1007 /* log devices */ #define AID_COMPASS 1008 /* compass device */ #define AID_MOUNT 1009 /* mountd socket */ #define AID_WIFI 1010 /* wifi subsystem */通过busybox ps可以查看进程的UID:
PID USER TIME COMMAND 1741 10004 0:00 {d.process.media} android.process.media 1804 10011 0:01 {ndroid.systemui} com.android.systemui 1987 10005 0:00 {externalstorage} com.android.externalstorage 2083 10038 0:00 {utmethod.pinyin} com.android.inputmethod.pinyin 2176 1001 0:00 {m.android.phone} com.android.phone 2195 1000 0:01 {droid.launcher3} com.android.launcher3
android5.X之后,在system\core\init\property_service.c以及其他文件,没有看到对property_perms的定义。
在TvSettings.apk写demo验证:
SystemProperties.set("jacky.debug.prop","1"); SystemProperties.set("log.jacky.prop","1"); SystemProperties.set("gsm.jacky.prop","1");get到结果:
[gsm.jacky.prop]: [1] [jacky.debug.prop]: [1] [log.jacky.prop]: [1]gsm和log前缀对于kikat4.4,UID=1000的process是无法设置的,但是在android 5.1平台可以设置,说明android 5.X后已经没有对property前缀的限制了。
2.SEAndroid对property配置
在property_service.c里面没有对property的限制了,但是在SEAndroid还是有根据前缀,给予不同的SContext。external\sepolicy\property_contexts
net. u:object_r:system_prop:s0 dev. u:object_r:system_prop:s0 runtime. u:object_r:system_prop:s0 hw. u:object_r:system_prop:s0 sys. u:object_r:system_prop:s0 sys.powerctl u:object_r:powerctl_prop:s0 service. u:object_r:system_prop:s0 wlan. u:object_r:system_prop:s0 dhcp. u:object_r:dhcp_prop:s0 dhcp.bt-pan.result u:object_r:pan_result_prop:s0 bluetooth. u:object_r:bluetooth_prop:s0类似以前版本,不同的前缀,对应不同的AID,这里对应不同的Scontext。
在上一篇文章<SELinux app配置>:/article/8046824.html
有介绍,对于app,只有domain为system_app的process才可以进行prop相关操作。
因此当我们需要客制化property前缀试,需要在property_contexts进行相关的配置。
例如:
ms.media. u:object_r:audio_prop:s0 ms.dvfs. u:object_r:audio_prop:s0
其他domain,比如surfaceflinger.te中配置:
# Set properties.
allow surfaceflinger system_prop:property_service set;
allow surfaceflinger ctl_bootanim_prop:property_service set;
也可以对prop进行设置,所以当其他的domain process无法设置prop时,可以添加allow语句添加权限。
总结:
SEAndroid对property的配置,和kikat4.4版本的AID配置一样,对应的前缀,指定对应的SContext即可。以及当其他domain的process需要设置property时,可以通过allow语句添加权限(不确定是否会违反neverallow).
相关文章推荐
- linux 知识体系精炼版
- 【Linux多进程同步】记录锁
- linux系统学习
- linux读书笔记(5章)
- 20135220谈愈敏Linux Book_5
- Linux:使用awk命令获取文本的某一行,某一列
- arm-linux-gcc.tgz安装
- linux mint 17.3 安装cuda7.5 toolkit
- Linux环境下jdk的配置
- linux中文件颜色,蓝色,白色等各自代表的含义
- linux中使用Xmanager调dbca创建数据库
- 《Linux内核分析》第五周学习笔记
- 启动centos出现ctrl+D维护不能进入系统
- 嵌入式Linux USB WIFI驱动的移植
- kali linux 2.0 cdrom fail
- U-boot mkimage指定Linux内核地址时的两种方式
- Linux下文件权限(一)用户ID和用户组ID
- Linux检测websphere进程宕机后自动重启脚本
- linux系统调用
- ARM Linux系统的时钟机制