微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 关于adb push 文件到手机system分区后,文件SELinux标签不对的说明

关于adb push 文件到手机system分区后,文件SELinux标签不对的说明

时间:10-02 整理:3721RD 点击:
[Description]

关于adb push 文件到手机system 分区后,文件 SElinux 标签不对的说明

[Keyword]

adb, push, SELinux, 标签, Label

[android Version]

Version >= android 5.0

[Solution]

在android 5.0 后, 默认启用了Enforcing SELinux, 有很多同仁遇到, adb push 执行档到手机后,
发现执行档的SELinux 签名不对的情况. 导致经常出现如:
"[1:init]init: Warning! Service xxxx needs a SELinux domain defined; please fix!"
这样的LOG, 以及Service 因为缺少权限而无法正常执行的情况.
其关键的问题在于push 到手机后,对应的执行档 SElinux 签名变成了
u:object_r:system_file:s0, 而非正确的u:object_r:xxxx_exec:s0. 因为目前adbd 在处理push
event 时, 只有当你把路径写完整时, 它才会帮你重新打上正确的SELinux 标签,否则它就无法正
确的识别签名路径.
如:
错误的写法: adb push xxxx /system/bin
===> push 后,发现xxxx 的SELinux 签名与file_contexts 中描述不匹配, 会是默认的
u:object_r:system_file:s0
正确的写法: adb push xxxx /system/bin/xxxx
===> push 后,发现xxxx 的SELinux 签名和file_contexts 里面的描述匹配, 如果是service, 通
常会是u:object_r:xxxx_exec:s0
即我们强调push 时, 务必把路径写完整.
补救措施, 你可以强制性用restorecon -r -F /system/bin 强制性重新SELinux 签名.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top