Android L 版本后uart console 没有root 权限

Android L 版本后uart console 没有root 权限的说明.

[Keyword]
L android 5.0 uart console root
[Android Version]
Version >= android 5.0

[Solution]
在Android L 后,Google 增强了Android 系统安全性, 强制性开启了SELinux. 去除了uart console 的root 权限. 如果你需要uart console , 可以临时调整.
(1). system/core/rootdir/init.rc
service console /system/bin/sh
class core
console
disabled
user shell
seclabel u:r:shell:s0

删除后面的user shell 这行以及 seclabel u:r:shell:s0 (M 版本后不能删除)这行.
注意的是: M 版本后, seclabel u:r:shell:s0 这行不能删除, 否则console service 无法启动, 其原因是: Google 增强了这块的SELinux约束,通过使用neverallow init { file_type fs_type}:file execure_no_trans;严格限制了init 启动service 都必须进行domain 切换,否则service 无法启动.
(2). 将SELinux 设置成permissve mode, 不然你还拿不到完整的root 权限 参考FAQ:
FAQ11484 [SELinux] 如何设置确认selinux 模式
https://online.mediatek.com/Pages/FAQ.aspx?List=SW&FAQID=FAQ11484

在Android KK 4.4 版本后,Google 有正式有限制的启用SELinux, 来增强android 的安全保护。
在ENG 版本中, 可以使用setenforce 命令进行设置:
adb shell setenforce 0 //设置成permissive 模式
adb shell setenforce 1 //设置成enforce 模式

在ENG/USER 版本中,都可以使用getenforce 命令进行查询,如:
root@mt6589_phone_720pv2:/ # getenforce
getenforce
Enforcing

如果想开机一启动就设置模式,你可以用下面方式:
KK 版本:更新mediatek/custom/{platform}/lk/rules_platform.mk
L 版本: 更新bootable/bootloader/lk/platform/mt6xxx/rules.mk
M 版本: 更新vendor/mediatek/proprietary/bootable/bootloader/lk/platform/mt6XXX/rules.mk

choose one of following value ->

1: disabled 2: permissive 3: enforcing

SELINUX_STATUS := 3
可直接调整这个SELINUX_STATUS这个的值为2, 严禁直接设置成1:disabled, 此会造成生成的文件无法正确的打上标签,造成在再次设置成enforcing时,难以预料的情况发生。

注意的是:
在L 版本后, Google 要求强制性开启enforcing mode, 前面的设置只针对userdebug, eng 版本有效, 如果要对user 版本有效,
需要修改system/core/init/Android.mk
如果是L 版本 新增:
ifeq ( (strip (TARGET_BUILD_VARIANT)),user)
LOCAL_CFLAGS += -DALLOW_DISABLE_SELINUX=1
endif

如果是在M 版本 将:
ifneq (, (filteruserdebugeng, (TARGET_BUILD_VARIANT)))
init_options += -DALLOW_LOCAL_PROP_OVERRIDE=1 -DALLOW_DISABLE_SELINUX=1
init_options += -DINIT_ENG_BUILD
else

修改成:
ifneq (, (filteruseruserdebugeng, (TARGET_BUILD_VARIANT)))
init_options += -DALLOW_LOCAL_PROP_OVERRIDE=1 -DALLOW_DISABLE_SELINUX=1
init_options += -DINIT_ENG_BUILD
else

需要注意的是, Google 要求强制性开启SELinux Enforcing Mode, 如果您关闭,将无法通过Google CTS.

猜你喜欢

转载自blog.csdn.net/zhenglie110/article/details/62046414