Android App 设置persist 类型系统变量异常分析

原创 2015年11月20日 17:09:05


属性权限

系统中存在多种前缀的系统变量,每种变量设置时对应的用户权限也不一样,系统变量的类型如下:
/* White list of permissions for setting property services. */
struct {
    const char *prefix;
    unsigned int uid;
    unsigned int gid;
} property_perms[] = {
    { "net.rmnet0.",      AID_RADIO,    0 },
    { "net.gprs.",        AID_RADIO,    0 },
    { "net.ppp",          AID_RADIO,    0 },
    { "net.qmi",          AID_RADIO,    0 },
    { "net.lte",          AID_RADIO,    0 },
    { "net.cdma",         AID_RADIO,    0 },
    { "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 },
    { "bluetooth.",       AID_BLUETOOTH,   0 },
    { "dhcp.",            AID_SYSTEM,   0 },
    { "dhcp.",            AID_DHCP,     0 },
    { "dhcp.offer",       AID_NOBODY,     0 },
    { "debug.",           AID_SYSTEM,   0 },
    { "debug.",           AID_SHELL,    0 },
    { "log.",             AID_SHELL,    0 },
    { "service.adb.root", AID_SHELL,    0 },
    { "service.adb.tcp.port", AID_SHELL,    0 },
    { "persist.sys.",     AID_SYSTEM,   0 },
    { "persist.service.", AID_SYSTEM,   0 },
    { "persist.security.", AID_SYSTEM,   0 },
    { "persist.service.bdroid.", AID_BLUETOOTH,   0 },
    { "selinux."         , AID_SYSTEM,   0 },
    { "mstar.",           AID_SYSTEM,   0 },
    { "http.",            AID_SYSTEM,   0 },
    { "mstar.media.",     AID_MEDIA,   0 },
    { "mstar.dvfs.",      AID_MEDIA,   0 },
    { NULL, 0, 0 }
};
可以注意到persist前缀系统变量的属性如下:
    { "persist.radio",    AID_RADIO,    0 },
    { "persist.sys.",     AID_SYSTEM,   0 },
    { "persist.service.", AID_SYSTEM,   0 },
    { "persist.security.", AID_SYSTEM,   0 },
    { "persist.service.bdroid.", AID_BLUETOOTH,   0 },
那么,我们在设置persist.sys类型的属性时,需要用户(也即app)需要有system权限。

app权限

上面说到,设置一些系统属性对应的USER id 为AID_SYSTEM时,需要app用system权限,下面我们可以看一下系统当中一些app的USER ID

      通过ps我们可以查到一些应用的USDER ID为system,radio,AID_USER + app_id ,知道了这些我们如果碰到设置系统属性不成功,就应该想到升级应用用户属性来
提升用户操作权限,有了system权限才可以对/data目录下的文件进行操作,而所有的persist类型的属性都是在/data/property/目录下以文件形式存在。
设置system权限的方法很简单,就是在AndroidManifest.xml 中添加 android:sharedUserId="android.uid.system" ,这样普通的app就有system权限。

INSTALL_FAILED_SHARED_USER_INCOMPATIBLE异常

普通app在添加android:sharedUserId="android.uid.system" ,使用eclipse编译后,安装就会出现“Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE”异常,其实就是添加android.uid.system 权限之后导致,解决方法:重新签名才能正常安装运行。  


总结:当前出现串口使用setprop/getprop 设置获取android系统属性能成功,但是应用通过SystemProperties.get、SystemProperties.set 失败就都可能是应用的权限不够
导致,而在串口设置时一般都root权限比较大才会成功。



添加persist.sys属性写权限方法

1.在AndroidManifest.xml manifest属性中添加android:sharedUserId="android.uid.system" 2.如果AndroidManifest.x...
  • u012554768
  • u012554768
  • 2015年06月06日 14:15
  • 2393

SELinux app权限配置

SELinux(或SEAndroid)将app划分为主要三种类型(根据user不同,也有其他的domain类型): 1)untrusted_app  第三方app,没有android平台签名,没有sy...
  • zhudaozhuan
  • zhudaozhuan
  • 2016年03月23日 17:49
  • 11043

SELinux app权限配置 android6.0 新特性

1.SEAndroid app分类 SELinux(或SEAndroid)将app划分为主要三种类型(根据user不同,也有其他的domain类型): 1)untrusted_app  第三方ap...
  • lqxandroid2012
  • lqxandroid2012
  • 2016年11月08日 20:25
  • 2969

Android的属性系统

网上有一篇文章介绍了Android的属性系统(http://blog.csdn.net/tekkamanitachi/archive/2009/06/18/4280982.aspx),我现在对其进行补...
  • chief1985
  • chief1985
  • 2009年09月14日 14:14
  • 17601

高通手机系统属性配置:system.prop----build.prop是所有安卓手机都有的一些配置信息。

build.prop是所有安卓手机都有的一些配置信息。 位置在system/build.prop 我们了解了这些配置的意义后,可以通过root后对这个配置文件做一定的修改,达到不同的自定义效果,如...
  • csh86277516
  • csh86277516
  • 2016年08月10日 15:52
  • 11776

Android系统属性分析ro.persist.

Android 系统属性SystemProperty分析 Android System Property 一 System Property   代码中大量存在:SystemPr...
  • hecong129
  • hecong129
  • 2015年05月26日 15:49
  • 2784

Android App 设置persist 类型系统变量异常分析

属性权限 系统中存在多种前缀的系统变量,每种变量设置时对应的用户权限也不一样,系统变量的类型如下: /* White list of permissions for setting propert...
  • kehyuanyu
  • kehyuanyu
  • 2015年11月20日 17:09
  • 966

Android 应用权限管理默认开关的修改方法

修改系统属性:persist.sys.strict_op_enable 开启应用权限管理:true 关闭应用权限管理:false 说明:以为对源码不熟,此部分控制很简单,却走了不少弯路,记之,为大...
  • u012905788
  • u012905788
  • 2014年01月23日 16:08
  • 4955

persist应用

1.什么是persist应用? 在AndroidManifest.xml中的applicationtag中定义:android:persistent="true" 在解析此应用时,给它增加一个...
  • y658t
  • y658t
  • 2016年06月10日 19:40
  • 874

Android 属性: persist

转自:http://blog.csdn.net/cloudwu007/article/details/7850496 问题:发现adb sehll setProp所设属性值在下次重起后被清除 ...
  • muojie
  • muojie
  • 2012年12月19日 17:35
  • 2183
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android App 设置persist 类型系统变量异常分析
举报原因:
原因补充:

(最多只允许输入30个字)