ออบเจ็กต์และบริการของระบบไฟล์ที่เพิ่มลงในบิลด์มักจะต้องใช้รหัสที่ไม่ซ้ำกันแยกต่างหาก ซึ่งเรียกว่ารหัส Android (AID) ปัจจุบันทรัพยากรจํานวนมาก เช่น ไฟล์และบริการ ใช้ AID หลัก (ที่ Android กำหนด) โดยไม่จําเป็น ในหลายกรณี คุณสามารถใช้ AID ของ OEM (ที่ OEM กำหนด) แทนได้
Android เวอร์ชันเก่า (Android 7.x และต่ำกว่า) ขยายกลไก AID โดยใช้ไฟล์ android_filesystem_config.h
เฉพาะอุปกรณ์เพื่อระบุความสามารถของระบบไฟล์และ/หรือ AID ที่กำหนดเองของ OEM อย่างไรก็ตาม ระบบนี้ใช้งานยากเนื่องจากไม่รองรับการใช้ชื่อที่สื่อความหมายสำหรับ AID ของ OEM คุณจึงต้องระบุตัวเลขดิบสำหรับช่องผู้ใช้และกลุ่มโดยไม่มีวิธีเชื่อมโยงชื่อที่สื่อความหมายกับ AID ที่เป็นตัวเลข
Android เวอร์ชันใหม่ (Android 8.0 ขึ้นไป) รองรับวิธีการใหม่ในการขยายความสามารถของระบบไฟล์ วิธีใหม่นี้รองรับรายการต่อไปนี้
- ตำแหน่งแหล่งที่มาหลายแห่งสำหรับไฟล์การกําหนดค่า (เปิดใช้การกําหนดค่าบิลด์ที่ขยายได้)
- การตรวจสอบความถูกต้องของค่า AID ของ OEM ขณะสร้าง
- การสร้างส่วนหัว AID ของ OEM ที่กําหนดเองซึ่งใช้ในไฟล์ต้นฉบับได้ตามต้องการ
- การเชื่อมโยงชื่อที่แสดงกับค่า AID จริงของ OEM รองรับอาร์กิวเมนต์สตริงที่ไม่ใช่ตัวเลขสําหรับผู้ใช้และกลุ่ม เช่น "foo" แทน "2901"
การปรับปรุงเพิ่มเติม ได้แก่ การนำอาร์เรย์ android_ids[]
ออกจาก system/core/libcutils/include/private/android_filesystem_config.h
ตอนนี้อาร์เรย์นี้อยู่ใน Bionic เป็นอาร์เรย์ที่สร้างขึ้นแบบส่วนตัวทั้งหมด โดยมีตัวรับข้อมูลที่มี getpwnam()
และ getgrnam()
(การดำเนินการนี้มีผลข้างเคียงคือการสร้างไบนารีที่เสถียรเมื่อมีการแก้ไข AID หลัก) ดูเครื่องมือและไฟล์ README ที่มีรายละเอียดเพิ่มเติมได้ที่ build/make/tools/fs_config
เพิ่มรหัส Android (AID)
Android 8.0 นำอาร์เรย์ android_ids[]
ออกจากโครงการโอเพนซอร์ส Android (AOSP) แล้ว ระบบจะสร้างชื่อที่ AID เข้ากันได้ทั้งหมดจากไฟล์ส่วนหัว system/core/libcutils/include/private/android_filesystem_config.h
แทนเมื่อสร้างอาร์เรย์ Bionic android_ids[]
เครื่องมือจะเลือก define
ที่ตรงกับ AID_*
และ * จะกลายเป็นชื่อแบบตัวพิมพ์เล็ก
ตัวอย่างเช่น ใน private/android_filesystem_config.h
#define AID_SYSTEM 1000
กลายเป็น
- ชื่อที่จำง่าย: system
- uid: 1000
- gid: 1000
หากต้องการเพิ่ม AID หลักของ AOSP ใหม่ ให้เพิ่ม #define
ลงในไฟล์ส่วนหัว android_filesystem_config.h
ระบบจะสร้าง AID ขณะสร้างและทำให้พร้อมใช้งานสำหรับอินเทอร์เฟซที่ใช้อาร์กิวเมนต์ผู้ใช้และกลุ่ม เครื่องมือจะตรวจสอบว่า AID ใหม่ไม่ได้อยู่ในช่วงของ APP หรือ OEM และจะคำนึงถึงการเปลี่ยนแปลงของช่วงเหล่านั้นด้วย และควรกำหนดค่าใหม่โดยอัตโนมัติเมื่อมีการเปลี่ยนแปลงหรือช่วงใหม่ที่ OEM สงวนไว้
กำหนดค่า AID
หากต้องการเปิดใช้กลไก AID ใหม่ ให้ตั้งค่า TARGET_FS_CONFIG_GEN
ในไฟล์ BoardConfig.mk
ตัวแปรนี้เก็บรายการไฟล์การกําหนดค่าไว้ ซึ่งช่วยให้คุณเพิ่มไฟล์ต่อท้ายได้ตามต้องการ
ตามแบบแผนแล้ว ไฟล์การกําหนดค่าจะใช้ชื่อ config.fs
แต่ในทางปฏิบัติแล้ว คุณจะใช้ชื่อใดก็ได้ ไฟล์ config.fs
อยู่ในรูปแบบ Python ConfigParser ini และมีส่วน caps (สําหรับการกําหนดค่าความสามารถของระบบไฟล์) และส่วน AID (สําหรับการกําหนดค่า AID ของ OEM)
กำหนดค่าส่วนขีดจำกัด
ส่วน CAPS รองรับการตั้งค่าความสามารถของระบบไฟล์ในออบเจ็กต์ระบบไฟล์ภายในบิลด์ (ระบบไฟล์เองต้องรองรับฟังก์ชันการทำงานนี้ด้วย)
เนื่องจากการเรียกใช้บริการที่เสถียรในฐานะรูทใน Android ทำให้ชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) ทำงานไม่สำเร็จ ข้อกำหนดก่อนหน้านี้สำหรับการเก็บรักษาความสามารถขณะเรียกใช้กระบวนการหรือบริการเกี่ยวข้องกับการตั้งค่าความสามารถแล้วใช้ setuid
/setgid
กับ AID ที่เหมาะสมเพื่อเรียกใช้ เมื่อใช้แคป คุณจะสามารถข้ามข้อกำหนดเหล่านี้และปล่อยให้เคอร์เนลดำเนินการให้คุณ เมื่อส่งการควบคุมไปยัง main()
กระบวนการของคุณจะมีความสามารถที่จำเป็นอยู่แล้วเพื่อให้บริการใช้ผู้ใช้และกลุ่มที่ไม่ใช่รูทได้ (วิธีนี้เป็นวิธีที่แนะนำสำหรับการเริ่มบริการที่มีสิทธิ์)
ส่วน CAPS ใช้ไวยากรณ์ต่อไปนี้
ส่วน | ค่า | คำจำกัดความ |
---|---|---|
[path] |
เส้นทางระบบไฟล์ที่จะกำหนดค่า เส้นทางที่ลงท้ายด้วย / จะถือว่าเป็นไดเรกทอรี ส่วนเส้นทางอื่นๆ จะถือว่าเป็นไฟล์
การระบุส่วนที่มี [path] เดียวกันในไฟล์ต่างๆ หลายส่วนเป็นข้อผิดพลาด ใน Python เวอร์ชัน <= 3.2 ไฟล์เดียวกันอาจมีส่วนที่ลบล้างส่วนก่อนหน้า ส่วนใน Python 3.2 ระบบจะตั้งค่าเป็นโหมดที่เข้มงวด |
|
mode |
โหมดไฟล์ฐาน 8 | โหมดไฟล์ฐาน 8 ที่ถูกต้องซึ่งมีความยาวอย่างน้อย 3 หลัก หากระบุ 3 ระบบจะใส่ 0 นําหน้า มิเช่นนั้นระบบจะใช้โหมดตามที่เป็นอยู่ |
user |
AID_<user> | C define สำหรับ AID ที่ถูกต้องหรือชื่อที่แสดง (เช่น ยอมรับทั้ง AID_RADIO และ radio ) หากต้องการกำหนด AID ที่กําหนดเอง โปรดดูการกําหนดค่าส่วน AID |
group |
AID_<group> | เหมือนกับผู้ใช้ |
caps |
cap* | ชื่อตามที่ประกาศใน
bionic/libc/kernel/uapi/linux/capability.h
โดยไม่ใส่ CAP_ นําหน้า อนุญาตให้ใช้ทั้งตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แคปอาจเป็นค่าต่อไปนี้ก็ได้
ค่าดิบ
|
ดูตัวอย่างการใช้งานได้ที่การใช้ความสามารถของระบบไฟล์
กำหนดค่าส่วน AID
ส่วน AID มี AID ของ OEM และใช้ไวยากรณ์ต่อไปนี้
ส่วน | ค่า | คำจำกัดความ |
---|---|---|
[AID_<name>] |
<name> ประกอบด้วยอักขระในชุดตัวอักษรพิมพ์ใหญ่ ตัวเลข และขีดล่าง ระบบจะใช้เวอร์ชันตัวพิมพ์เล็กเป็นชื่อที่สื่อความหมาย ไฟล์ส่วนหัวที่สร้างขึ้นสำหรับการรวมโค้ดจะใช้ AID_<name> ที่ตรงกันทุกประการ
การระบุหลายส่วนที่มี AID_<name> เดียวกัน (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่โดยมีข้อจำกัดเดียวกับ [path] ) จะทำให้เกิดข้อผิดพลาด
<name> ต้องขึ้นต้นด้วยชื่อพาร์ติชันเพื่อให้มั่นใจว่าจะไม่ทับซ้อนกับแหล่งที่มาอื่น |
|
value |
<number> | สตริงตัวเลขสไตล์ C ที่ถูกต้อง (ฐานสิบหก ฐานแปด ฐานสอง และทศนิยม)
การระบุหลายส่วนที่มีตัวเลือกค่าเดียวกันจะเป็นข้อผิดพลาด ต้องระบุตัวเลือกค่าในช่วงที่สอดคล้องกับพาร์ติชันที่ใช้ใน <name> รายการพาร์ติชันที่ถูกต้องและช่วงที่เกี่ยวข้องจะกำหนดไว้ใน system/core/libcutils/include/private/android_filesystem_config.h
ตัวเลือกมีดังนี้
|
ดูตัวอย่างการใช้งานได้ที่การกําหนดชื่อ AID ของ OEM และการใช้ AID ของ OEM
ตัวอย่างการใช้งาน
ตัวอย่างต่อไปนี้จะแสดงรายละเอียดวิธีกำหนดและใช้ AID ของ OEM และวิธีเปิดใช้ความสามารถของระบบไฟล์ ชื่อ AID ของ OEM ([AID_name]) ต้องขึ้นต้นด้วยชื่อพาร์ติชัน เช่น "vendor_" เพื่อให้มั่นใจว่าชื่อดังกล่าวจะไม่ทับซ้อนกับชื่อ AOSP หรือพาร์ติชันอื่นๆ ในอนาคต
กำหนดชื่อ AID ของ OEM
หากต้องการกําหนด AID ของ OEM ให้สร้างไฟล์ config.fs
และตั้งค่า AID เช่น ใน device/x/y/config.fs
ให้ตั้งค่าดังนี้
[AID_VENDOR_FOO] value: 2900
หลังจากสร้างไฟล์แล้ว ให้ตั้งค่าตัวแปร TARGET_FS_CONFIG_GEN
และชี้ไปที่ไฟล์ใน BoardConfig.mk
เช่น ใน device/x/y/BoardConfig.mk
ให้ตั้งค่าดังนี้
TARGET_FS_CONFIG_GEN += device/x/y/config.fs
ตอนนี้ระบบส่วนใหญ่ในบิลด์ใหม่สามารถใช้ AID ที่กําหนดเองได้แล้ว
ใช้ AID ของ OEM
หากต้องการใช้ AID ของ OEM ให้ใส่ oemaids_headers
ใน Makefile ที่เชื่อมโยง และเพิ่ม #include "generated_oem_aid.h"
จากนั้นเริ่มใช้ตัวระบุที่ประกาศ เช่น ใน my_file.c
ให้เพิ่มข้อมูลต่อไปนี้
#include "generated_oem_aid.h" … If (ipc->uid == AID_VENDOR_FOO) { // Do something ...
ในไฟล์ Android.bp
ที่เชื่อมโยง ให้เพิ่มข้อมูลต่อไปนี้
header_libs: ["oemaids_headers"],
หากคุณใช้ไฟล์ Android.mk
ให้เพิ่มข้อมูลต่อไปนี้
LOCAL_HEADER_LIBRARIES := oemaids_headers
ใช้ชื่อที่จำง่าย
ใน Android 9 คุณสามารถใช้ชื่อที่แสดงสำหรับอินเทอร์เฟซที่รองรับชื่อ AID เช่น
- ในคําสั่ง
chown
ในsome/init.rc
chown vendor_foo /vendor/some/vendor_foo/file
- ใน
service
ในsome/init.rc
service vendor_foo /vendor/bin/foo_service user vendor_foo group vendor_foo
เนื่องจาก/vendor/etc/passwd
และ /vendor/etc/group
ทำการแมปภายในจากชื่อที่แสดงเป็น uid จึงต้องมาสก์พาร์ติชันของผู้ให้บริการ
เชื่อมโยงชื่อที่จำง่าย
Android 9 รองรับการเชื่อมโยงชื่อที่แสดงด้วยค่า AID จริงของ OEM คุณสามารถใช้อาร์กิวเมนต์สตริงที่ไม่ใช่ตัวเลขสำหรับผู้ใช้และกลุ่มได้ เช่น "vendor_foo" แทน "2901"
แปลงจาก AID เป็นชื่อที่แสดง
สำหรับ AID ของ OEM Android 8.x กำหนดให้ใช้ oem_####
กับ getpwnam
และฟังก์ชันที่คล้ายกัน รวมถึงในที่ที่จัดการการค้นหาด้วย getpwnam
(เช่น สคริปต์ init
) ใน Android 9 คุณสามารถใช้เพื่อน getpwnam
และ getgrnam
ใน Bionic เพื่อแปลงจากรหัส Android (AID) เป็นชื่อที่แสดงได้ และในทางกลับกัน
ใช้ความสามารถของระบบไฟล์
หากต้องการเปิดใช้ความสามารถของระบบไฟล์ ให้สร้างส่วน caps ในไฟล์ config.fs
ตัวอย่างเช่น ใน device/x/y/config.fs
ให้เพิ่มส่วนต่อไปนี้
[system/bin/foo_service] mode: 0555 user: AID_VENDOR_FOO group: AID_SYSTEM caps: SYS_ADMIN | SYS_NICE
หลังจากสร้างไฟล์แล้ว ให้ตั้งค่า TARGET_FS_CONFIG_GEN
ให้ชี้ไปที่ไฟล์นั้นใน BoardConfig.mk
เช่น ใน device/x/y/BoardConfig.mk
ให้ตั้งค่าดังนี้
TARGET_FS_CONFIG_GEN += device/x/y/config.fs
เมื่อเรียกใช้บริการ vendor_foo
บริการจะเริ่มทำงานด้วยความสามารถ CAP_SYS_ADMIN
และ CAP_SYS_NICE
โดยไม่มีการเรียก setuid
และ setgid
นอกจากนี้ นโยบาย SELinux ของบริการ vendor_foo
ไม่จำเป็นต้องใช้ความสามารถ setuid
และ setgid
อีกต่อไปและสามารถลบออกได้
กำหนดค่าการลบล้าง (Android 6.x-7.x)
Android 6.0 ได้ย้าย fs_config
และคำจำกัดความของโครงสร้างที่เกี่ยวข้อง (system/core/include/private/android_filesystem_config.h
) ไปยัง system/core/libcutils/fs_config.c
ซึ่งสามารถอัปเดตหรือลบล้างได้ด้วยไฟล์ไบนารีที่ติดตั้งใน /system/etc/fs_config_dirs
และ /system/etc/fs_config_files
การใช้กฎการจับคู่และการแยกวิเคราะห์แยกต่างหากสำหรับไดเรกทอรีและไฟล์ (ซึ่งอาจใช้นิพจน์ทั่วไปเพิ่มเติมได้) ทำให้ Android จัดการไดเรกทอรีและไฟล์ใน 2 ตารางที่แตกต่างกันได้
คําจํากัดความโครงสร้างใน system/core/libcutils/fs_config.c
ไม่เพียงอนุญาตให้อ่านไดเรกทอรีและไฟล์รันไทม์เท่านั้น แต่โฮสต์ยังใช้ไฟล์เดียวกันในระหว่างเวลาสร้างเพื่อสร้างอิมเมจระบบไฟล์ได้เช่นเดียวกับ ${OUT}/system/etc/fs_config_dirs
และ ${OUT}/system/etc/fs_config_files
แม้ว่าระบบการกําหนดค่าแบบโมดูลที่เปิดตัวใน Android 8.0 จะเข้ามาแทนที่วิธีการลบล้างการขยายระบบไฟล์แล้ว แต่คุณยังคงใช้วิธีการแบบเก่าได้หากต้องการ ส่วนต่อไปนี้จะอธิบายรายละเอียดเกี่ยวกับวิธีสร้างและรวมไฟล์ลบล้าง รวมถึงวิธีกำหนดค่าระบบไฟล์
สร้างไฟล์การลบล้าง
คุณสามารถสร้างไฟล์ไบนารีที่ปรับแนวแล้ว
/system/etc/fs_config_dirs
และ
/system/etc/fs_config_files
ได้โดยใช้เครื่องมือ
fs_config_generate
ใน build/tools/fs_config
เครื่องมือนี้ใช้libcutils
ฟังก์ชันไลบรารี (fs_config_generate()
) เพื่อจัดการข้อกําหนด DAC ลงในบัฟเฟอร์ และกำหนดกฎสำหรับไฟล์รวมเพื่อทำให้กฎ DAC เป็นมาตรฐาน
หากต้องการใช้ ให้สร้างไฟล์รวมใน device/vendor/device/android_filesystem_config.h
ที่ทำหน้าที่เป็นไฟล์ลบล้าง ไฟล์ต้องใช้รูปแบบ structure fs_path_config
ที่กําหนดไว้ใน system/core/include/private/android_filesystem_config.h
ที่มีการเริ่มต้นโครงสร้างต่อไปนี้สําหรับสัญลักษณ์ไดเรกทอรีและไฟล์
- สำหรับไดเรกทอรี ให้ใช้
android_device_dirs[]
- สำหรับไฟล์ ให้ใช้
android_device_files[]
เมื่อไม่ได้ใช้ android_device_dirs[]
และ android_device_files[]
คุณจะกำหนด NO_ANDROID_FILESYSTEM_CONFIG_DEVICE_DIRS
และ NO_ANDROID_FILESYSTEM_CONFIG_DEVICE_FILES
ได้ (ดูตัวอย่างด้านล่าง) นอกจากนี้ คุณยังระบุไฟล์การลบล้างได้โดยใช้ TARGET_ANDROID_FILESYSTEM_CONFIG_H
ในการกำหนดค่าบอร์ดและตั้งชื่อไฟล์เป็น android_filesystem_config.h
รวมไฟล์การลบล้าง
หากต้องการรวมไฟล์ ให้ตรวจสอบว่า PRODUCT_PACKAGES
มี fs_config_dirs
และ/หรือ fs_config_files
เพื่อให้ติดตั้งไฟล์ไปยัง /system/etc/fs_config_dirs
และ /system/etc/fs_config_files
ได้ ระบบบิลด์จะค้นหา android_filesystem_config.h
ที่กําหนดเองใน $(TARGET_DEVICE_DIR)
ที่มี BoardConfig.mk
หากไฟล์นี้อยู่ในตำแหน่งอื่น ให้ตั้งค่าตัวแปรการกําหนดค่าบอร์ด TARGET_ANDROID_FILESYSTEM_CONFIG_H
ให้ชี้ไปยังตําแหน่งนั้น
กำหนดค่าระบบไฟล์
วิธีกำหนดค่าระบบไฟล์ใน Android 6.0 ขึ้นไป
- สร้างไฟล์
$(TARGET_DEVICE_DIR)/android_filesystem_config.h
- เพิ่ม
fs_config_dirs
และ/หรือfs_config_files
ลงในPRODUCT_PACKAGES
ในไฟล์การกําหนดค่าของบอร์ด (เช่น$(TARGET_DEVICE_DIR)/device.mk
)
ตัวอย่างการลบล้าง
ตัวอย่างนี้แสดงแพตช์สำหรับการลบล้าง Daemon system/bin/glgps
เพื่อเพิ่มการรองรับการล็อกให้ตื่นในไดเรกทอรี device/vendor/device
โปรดคำนึงถึงสิ่งต่อไปนี้
- รายการโครงสร้างแต่ละรายการคือโหมด, uid, gid, ความสามารถ และชื่อ
system/core/include/private/android_filesystem_config.h
จะรวมอยู่โดยอัตโนมัติเพื่อให้ #defines ของไฟล์ Manifest (AID_ROOT
,AID_SHELL
,CAP_BLOCK_SUSPEND
) - ส่วน
android_device_files[]
มีการดำเนินการเพื่อระงับการเข้าถึงsystem/etc/fs_config_dirs
เมื่อไม่ได้ระบุ ซึ่งทำหน้าที่เป็นการป้องกัน DAC เพิ่มเติมในกรณีที่ไม่มีเนื้อหาสำหรับการลบล้างไดเรกทอรี อย่างไรก็ตาม การป้องกันนี้ถือว่าอ่อนมาก หากมีผู้ควบคุม/system
บุคคลนั้นจะทำสิ่งใดก็ได้ที่ต้องการ
diff --git a/android_filesystem_config.h b/android_filesystem_config.h new file mode 100644 index 0000000..874195f --- /dev/null +++ b/android_filesystem_config.h @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +/* This file is used to define the properties of the file system +** images generated by build tools (eg: mkbootfs) and +** by the device side of adb. +*/ + +#define NO_ANDROID_FILESYSTEM_CONFIG_DEVICE_DIRS +/* static const struct fs_path_config android_device_dirs[] = { }; */ + +/* Rules for files. +** These rules are applied based on "first match", so they +** should start with the most specific path and work their +** way up to the root. Prefixes ending in * denotes wildcard +** and will allow partial matches. +*/ +static const struct fs_path_config android_device_files[] = { + { 00755, AID_ROOT, AID_SHELL, (1ULL << CAP_BLOCK_SUSPEND), "system/bin/glgps" }, +#ifdef NO_ANDROID_FILESYSTEM_CONFIG_DEVICE_DIRS + { 00000, AID_ROOT, AID_ROOT, 0, "system/etc/fs_config_dirs" }, +#endif +}; diff --git a/device.mk b/device.mk index 0c71d21..235c1a7 100644 --- a/device.mk +++ b/device.mk @@ -18,7 +18,8 @@ PRODUCT_PACKAGES := \ libwpa_client \ hostapd \ wpa_supplicant \ - wpa_supplicant.conf + wpa_supplicant.conf \ + fs_config_files ifeq ($(TARGET_PREBUILT_KERNEL),) ifeq ($(USE_SVELTE_KERNEL), true)
ย้ายข้อมูลระบบไฟล์จากรุ่นก่อนหน้า
เมื่อย้ายข้อมูลระบบไฟล์จาก Android 5.x และเวอร์ชันก่อนหน้า โปรดทราบว่า Android 6.x
- นำการรวม โครงสร้าง และการจำกัดความในบรรทัดบางส่วนออก
- ต้องมีการอ้างอิงถึง
libcutils
แทนการเรียกใช้โดยตรงจากsystem/core/include/private/android_filesystem_config.h
ไฟล์ปฏิบัติการส่วนตัวของผู้ผลิตอุปกรณ์ซึ่งใช้system/code/include/private_filesystem_config.h
สำหรับโครงสร้างไฟล์หรือไดเรกทอรี หรือfs_config
ต้องเพิ่มการพึ่งพาไลบรารีlibcutils
- ต้องใช้สำเนาสาขาส่วนตัวของผู้ผลิตอุปกรณ์สำหรับ
system/core/include/private/android_filesystem_config.h
ที่มีเนื้อหาเพิ่มเติมเกี่ยวกับเป้าหมายที่มีอยู่เพื่อย้ายไปยังdevice/vendor/device/android_filesystem_config.h
- ขอสงวนสิทธิ์ในการใช้การควบคุมการเข้าถึงแบบบังคับ (MAC) ของ SELinux กับไฟล์การกําหนดค่าในระบบเป้าหมาย การติดตั้งใช้งานที่มีไฟล์ปฏิบัติการเป้าหมายที่กําหนดเองโดยใช้
fs_config()
ต้องตรวจสอบการเข้าถึง