SeLinux安全上下文文件

在SeLinux 框架中,需要为每个主体和客体设置好安全上下文。在Android中,常见的安全上下文文件有file_contexts、genfs_contexts、service_contexts、mac_permissions.xml和seapp_contexts

file_contexts

根系统中所有文件的安全上下文, 如/system/bin, /system/etc 等文件

/system(/.*)?		u:object_r:system_file:s0
/system/apex/com.android.art	u:object_r:art_apex_dir:s0
/system/lib(64)?(/.*)?		u:object_r:system_lib_file:s0
/system/lib(64)?/bootstrap(/.*)? u:object_r:system_bootstrap_lib_file:s0
/system/bin/atrace	u:object_r:atrace_exec:s0
/system/bin/auditctl	u:object_r:auditctl_exec:s0

genfs_contexts

虚拟文件系统的安全上下文,如proc、sys、debugfs

genfscon proc / u:object_r:proc:s0
genfscon proc /asound u:object_r:proc_asound:s0
genfscon proc /buddyinfo u:object_r:proc_buddyinfo:s0
genfscon sysfs / u:object_r:sysfs:s0
genfscon sysfs /devices/system/cpu u:object_r:sysfs_devices_system_cpu:s0
genfscon sysfs /class/android_usb                 u:object_r:sysfs_android_usb:s0
genfscon sysfs /class/extcon                      u:object_r:sysfs_extcon:s0
genfscon debugfs /kprobes                             u:object_r:debugfs_kprobes:s0
genfscon debugfs /mmc0                                u:object_r:debugfs_mmc:s0
genfscon debugfs /tracing                             u:object_r:debugfs_tracing_debug:s0
genfscon tracefs /                                    u:object_r:debugfs_tracing_debug:s0
genfscon debugfs /tracing/tracing_on                  u:object_r:debugfs_tracing:s0

service_contexts

系统binder服务的安全上下文,在启动过程中,servermanger会读取该配置

media.audio_flinger                       u:object_r:audioserver_service:s0
media.audio_policy                        u:object_r:audioserver_service:s0
media.camera                              u:object_r:cameraserver_service:s0
wifiaware                                 u:object_r:wifiaware_service:s0
wifirtt                                   u:object_r:rttmanager_service:s0
window                                    u:object_r:window_service:s0
*                                         u:object_r:default_android_service:s0

自定义的系统服务,在没有特别指定的情况下,默认的安全上下文是u:object_r:default_android_service:s0

mac_permissions.xml和seapp_contexts

mac_permissions.xml用于根据应用签名和应用软件包名称(后者可选)为应用分配seinfo 标记。随后,分配的seinfo 标记可在seapp_contexts 文件中用作密钥,以便为带有该seinfo 标记的所有应用分配特定标签。在启动期间,system_server 会读取此配置

   <signer signature="@PLATFORM" >
      <seinfo value="platform" />
    </signer>

    <!-- Media key in AOSP -->
    <signer signature="@MEDIA" >
      <seinfo value="media" />
    </signer>

    <signer signature="@NETWORK_STACK" >
      <seinfo value="network_stack" />
    </signer>

seapp_contexts,app的安全上下文,用于描述apk 安装之后的目录文件和/data/data 目录分配标签。在每次应用启动时,zygote 进程都会读取此配置;在启动期间,installd 会读取此配置

user=_app seinfo=platform name=com.android.traceur domain=traceur_app type=app_data_file levelFrom=all
user=system seinfo=platform domain=system_app type=system_app_data_file
user=bluetooth seinfo=platform domain=bluetooth type=bluetooth_data_file
user=_app isPrivApp=true name=com.google.android.gms:* domain=gmscore_app type=privapp_data_file levelFrom=user
user=_app isPrivApp=true name=com.google.android.gsf domain=gmscore_app type=privapp_data_file levelFrom=user
user=_app minTargetSdkVersion=30 domain=untrusted_app type=app_data_file levelFrom=all
user=_app minTargetSdkVersion=29 domain=untrusted_app_29 type=app_data_file levelFrom=all
user=_app minTargetSdkVersion=28 domain=untrusted_app_27 type=app_data_file levelFrom=all

在Android 8.0 之后启动了treble计划,分为了平台和非平台。selinux 安全上下文也被分为了平台和非平台,可以查看system/sepolicy/Android.mk 中的编译说明。

system/sepolicy/private:平台私有规则,不会向vendor 部分暴露。里面包含了各种策略控制te 文件,以及上面提到的上下文文件。
system/sepolicy/public: 平台共有策略的全部定义,里面包含了各种策略控制te 文件,
system/sepolicy/vendor 厂商规则,可引用public 的规则,不能引用private 的规则
device/manufacturer/device-name/sepolicy 厂商自定义的规则,包括如上的vendor 部分

上面说的安全上下文文件在编译之后,都会放到system/etc/seliunx和vendor/etc/seliunx 目录下。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值