Android Selinux详解[六]--新增属性标签相关
3.以system_server为例,因为它本身对system_prop的属性有set权限,如果需要在systemserver中新增属性的话,可以以sys.开头,或者以persist.sys.开头,都不用再去新增对应的权限了。1. 对于没有在property_contexts中定义的属性,默认标签为default_prop。2. 以下这种代表以sys.开头的属性标签都为system_prop,其他
属性有很多种命名方法,但对应的标签也不同,安卓原生的一个属性标签可以参考property_contexts - OpenGrok cross reference for /system/sepolicy/private/property_contexts
对于这个,我们先理解一下这个里面的内容分别是什么意思,
1. 对于没有在property_contexts中定义的属性,默认标签为default_prop
# default property context
* u:object_r:default_prop:s0
2. 以下这种代表以sys.开头的属性标签都为system_prop,其他的也都是一样的
sys. u:object_r:system_prop:s0
那列几个我们常用的吧
hw. u:object_r:system_prop:s0
debug. u:object_r:debug_prop:s0
ro.hw. u:object_r:system_prop:s0
ro.config. u:object_r:config_prop:s0
persist.sys. u:object_r:system_prop:s0
3. 以system_server为例,因为它本身对system_prop的属性有set权限,如果需要在systemserver中新增属性的话,可以以sys.开头,或者以persist.sys.开头,都不用再去新增对应的权限了
system_server.te - OpenGrok cross reference for /system/sepolicy/private/system_server.te
# Property Service write
set_prop(system_server, system_prop)
4. 如果你是新增其他新的属性,并重新打标签,那可以按照如下方法
在对应目录的property_contexts中新增标签
sys.new.biaoqian u:object_r:new_biaoqian_prop:s0
type声明有以下几种方式:
system_internal_prop(new_biaoqian_prop)
system_restricted_prop(new_biaoqian_prop)
system_public_prop(new_biaoqian_prop)
......
对应的函数解释如下:
基本定义define_prop如下
# define_prop(name, owner, scope)
# Define a property with given owner and scope
#
define(`define_prop', `
type $1, property_type, $2_property_type, $2_$3_property_type;
')
函数定义 | 解释 |
---|---|
define(`system_internal_prop', ` define_prop($1, system, internal) treble_sysprop_neverallow(` neverallow { domain -coredomain } $1:file no_rw_file_perms; ') ') | # Define a /system-owned property used only in /system 只在system使用 |
define(`system_restricted_prop', ` define_prop($1, system, restricted) treble_sysprop_neverallow(` neverallow { domain -coredomain } $1:property_service set; ') ') | # Define a /system-owned property which can't be written outside /system 在system使用,外部不能write |
define(`system_public_prop', `define_prop($1, system, public)') | # Define a /system-owned property with no restrictions 在system使用,没有任何限制 |
define(`system_vendor_config_prop', ` system_public_prop($1) set_prop(vendor_init, $1) neverallow { domain -init -vendor_init } $1:property_service set; ') | # Define a /system-owned property which can only be written by vendor_init 定义一个只在system使用的属性,但vendor_init可以写 |
define(`product_internal_prop', ` define_prop($1, product, internal) treble_sysprop_neverallow(` neverallow { domain -coredomain } $1:file no_rw_file_perms; ') ') | # Define a /product-owned property used only in /product 定义一个只在product下使用的属性 |
define(`product_restricted_prop', ` define_prop($1, product, restricted) treble_sysprop_neverallow(` neverallow { domain -coredomain } $1:property_service set; ') ') | # Define a /product-owned property which can't be written outside /product 定义一个product下可以使用的属性,在product外无法写 |
define(`product_public_prop', `define_prop($1, product, public)') | # Define a /product-owned property with no restrictions 在product下可以使用,没有任何限制 |
define(`vendor_internal_prop', ` define_prop($1, vendor, internal) treble_sysprop_neverallow(` # init and dumpstate are in coredomain, but should be able to read all props. neverallow { coredomain -init -dumpstate } $1:file no_rw_file_perms; ') ') | # Define a /vendor-owned property used only in /vendor 只在vendor下使用的属性 |
define(`vendor_restricted_prop', ` define_prop($1, vendor, restricted) treble_sysprop_neverallow(` # init is in coredomain, but should be able to write all props. neverallow { coredomain -init } $1:property_service set; ') ') | # Define a /vendor-owned property which can't be written outside /vendor 在vendor下可以使用,vendor以外不能写 |
define(`vendor_public_prop', `define_prop($1, vendor, public)') | # Define a /vendor-owned property with no restrictions 在vendor下可以使用,没有任何限制 |
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)