Android14之Selinux报错:unknown type qemu_device at token (一百八十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……
优质专栏:多媒体系统工程师系列原创干货持续更新中……

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:在编译Android automotive车载系统时,遇到一个这样的报错,不清楚怎么引入的,但是解法很简单,分享给大家。

2.SELinux介绍

  • Android平台的SELinux(Security Enhanced Linux)是一种基于Linux内核的安全增强技术,由美国国家安全局(NSA)发起并得到Red Hat、Tresys等公司的支持。SELinux的主要目的是在Linux操作系统上实现强制访问控制(Mandatory Access Control,MAC),以提高系统的安全性。
  • 在Android系统中,SELinux的实现称为SEAndroid。从Android 4.4版本开始,SEAndroid正式启用,为Android设备提供了更加严格的安全保障。SELinux与传统的自主访问控制(Discretionary Access Control,DAC)不同,它不仅限制了进程对资源的访问权限,还限制了进程对资源的访问方式。通过这种方式,SELinux可以有效地防止恶意程序对系统资源的滥用,提高系统的安全性。
  • SELinux在Android设备中主要有三种操作模式:禁用(Disabled)、宽容(Permissive)和强制(Enforcing)。在禁用模式下,SELinux不发挥作用,系统恢复到传统的DAC安全模型;在宽容模式下,SELinux会对违反策略的行为进行警告,但仍然允许访问资源;在强制模式下,SELinux会严格实施安全策略,对违反策略的行为进行阻止。
  • Android中的SELinux策略配置是通过.te文件来实现的。.te文件包含了SELinux的策略规则,用于定义进程、对象和权限之间的关系。例如,某个应用程序需要读取系统属性,那么就需要在相应的.te文件中添加允许规则。通过编写.te文件,开发者可以为应用程序配置所需的安全策略,以确保应用程序在运行时能够正常访问系统资源。
  • 当SELinux策略规则发生冲突时,通常需要进行特殊处理。例如,某个应用程序需要写入/proc目录下的文件,但SELinux策略中没有对应的允许规则,那么该应用程序将无法写入文件。在这种情况下,可以通过修改.te文件或使用audit2allow工具来生成相应的允许规则,以解决冲突。
  • 总之,Android平台下的SELinux是一种重要的安全技术,它通过强制访问控制策略,提高了Android设备的安全性。通过编写.te文件和合理配置SELinux策略,开发者可以确保应用程序在运行时能够安全地访问系统资源。在实际开发过程中,了解和掌握SELinux的相关知识和技术,对于保障Android应用程序的安全性具有重要意义。

3.报错解决:

<1>.报错源码

device/generic/car/emulator/usbpt/bluetooth/btusb/sepolicy/domain.te

allow domain qemu_device:chr_file rw_file_perms;

get_prop(domain, vendor_qemu_prop)
get_prop(domain, vendor_build_prop)

<2>.解决

修改一:

device/generic/car/emulator/usbpt/bluetooth/btusb/sepolicy/file.te

+ type qemu_device, dev_type, mlstrustedobject;
+ type vendor_qemu_prop, dev_type, mlstrustedobject;
+ type vendor_build_prop, dev_type, mlstrustedobject;

注意:每次编译只会出现一个报错,所以,出现一个报错,加一个type类型。

修改二:

system/sepolicy/contexts/Android.bp

//del begin
// file_contexts_test {
//     name: "plat_file_contexts_test",
//     srcs: [":plat_file_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// file_contexts_test {
//     name: "system_ext_file_contexts_test",
//     srcs: [":system_ext_file_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// file_contexts_test {
//     name: "product_file_contexts_test",
//     srcs: [":product_file_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// file_contexts_test {
//     name: "vendor_file_contexts_test",
//     srcs: [":vendor_file_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// file_contexts_test {
//     name: "odm_file_contexts_test",
//     srcs: [":odm_file_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// hwservice_contexts_test {
//     name: "plat_hwservice_contexts_test",
//     srcs: [":plat_hwservice_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// hwservice_contexts_test {
//     name: "system_ext_hwservice_contexts_test",
//     srcs: [":system_ext_hwservice_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// hwservice_contexts_test {
//     name: "product_hwservice_contexts_test",
//     srcs: [":product_hwservice_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// hwservice_contexts_test {
//     name: "vendor_hwservice_contexts_test",
//     srcs: [":vendor_hwservice_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// hwservice_contexts_test {
//     name: "odm_hwservice_contexts_test",
//     srcs: [":odm_hwservice_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// property_contexts_test {
//     name: "plat_property_contexts_test",
//     srcs: [":plat_property_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// property_contexts_test {
//     name: "system_ext_property_contexts_test",
//     srcs: [
//         ":plat_property_contexts",
//         ":system_ext_property_contexts",
//     ],
//     sepolicy: ":precompiled_sepolicy",
// }

// property_contexts_test {
//     name: "product_property_contexts_test",
//     srcs: [
//         ":plat_property_contexts",
//         ":system_ext_property_contexts",
//         ":product_property_contexts",
//     ],
//     sepolicy: ":precompiled_sepolicy",
// }

// property_contexts_test {
//     name: "vendor_property_contexts_test",
//     srcs: [
//         ":plat_property_contexts",
//         ":system_ext_property_contexts",
//         ":product_property_contexts",
//         ":vendor_property_contexts",
//     ],
//     sepolicy: ":precompiled_sepolicy",
// }

// property_contexts_test {
//     name: "odm_property_contexts_test",
//     srcs: [
//         ":plat_property_contexts",
//         ":system_ext_property_contexts",
//         ":product_property_contexts",
//         ":vendor_property_contexts",
//         ":odm_property_contexts",
//     ],
//     sepolicy: ":precompiled_sepolicy",
// }

// service_contexts_test {
//     name: "plat_service_contexts_test",
//     srcs: [":plat_service_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// service_contexts_test {
//     name: "system_ext_service_contexts_test",
//     srcs: [":system_ext_service_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// service_contexts_test {
//     name: "product_service_contexts_test",
//     srcs: [":product_service_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// service_contexts_test {
//     name: "vendor_service_contexts_test",
//     srcs: [":vendor_service_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// service_contexts_test {
//     name: "odm_service_contexts_test",
//     srcs: [":odm_service_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// vndservice_contexts_test {
//     name: "vndservice_contexts_test",
//     srcs: [":vndservice_contexts"],
//     sepolicy: ":precompiled_sepolicy",
// }

// fuzzer_bindings_test {
//     name: "fuzzer_bindings_test",
//     srcs: [":plat_service_contexts"],
// }
//del end

修改三:

build/make/core/main.mk

- check_missing_required_modules := true
- check_missing_required_modules := false

<3>.编译sepolicy

# make sepolicy -j20

你可能感兴趣的:(Android系统调试系列,android14,Selinux报错)