การควบคุมการเข้าถึงด้วยดุลยพินิจ (DAC)

ออบเจ็กต์ระบบไฟล์และบริการที่เพิ่มลงในบิลด์มักต้องการ ID ที่ไม่ซ้ำกันซึ่งแยกจากกัน ซึ่งเรียกว่า Android ID (AID) ปัจจุบัน ทรัพยากรจำนวนมาก เช่น ไฟล์และบริการใช้ AID หลัก (ที่กำหนดโดย Android) โดยไม่จำเป็น ในหลายกรณี คุณสามารถใช้ OEM (OEM-defined) AID แทนได้

Android เวอร์ชันก่อนหน้า (Android 7.x และลด) ขยายกลไกเอดส์โดยใช้อุปกรณ์เฉพาะ android_filesystem_config.h ไฟล์เพื่อระบุความสามารถของระบบแฟ้มและ / หรือที่กำหนดเอง OEM เอดส์ อย่างไรก็ตาม ระบบนี้ใช้งานไม่ได้เนื่องจากไม่รองรับการใช้ชื่อที่ดีสำหรับ OEM AID ทำให้คุณต้องระบุตัวเลขดิบสำหรับฟิลด์ผู้ใช้และกลุ่มโดยไม่ต้องเชื่อมโยงชื่อที่จำง่ายกับ AID ที่เป็นตัวเลข

Android เวอร์ชันใหม่กว่า (Android 8.0 ขึ้นไป) รองรับวิธีการใหม่ในการขยายความสามารถของระบบไฟล์ วิธีการใหม่นี้รองรับสิ่งต่อไปนี้:

  • ตำแหน่งต้นทางหลายแห่งสำหรับไฟล์การกำหนดค่า (เปิดใช้งานการกำหนดค่าบิลด์ที่ขยายได้)
  • การตรวจสอบความมีสติของค่า OEM AID
  • การสร้างส่วนหัว OEM AID แบบกำหนดเองที่สามารถใช้ในไฟล์ต้นฉบับได้ตามต้องการ
  • การเชื่อมโยงชื่อที่จำง่ายกับค่า OEM AID จริง รองรับอาร์กิวเมนต์สตริงที่ไม่ใช่ตัวเลขสำหรับผู้ใช้และกลุ่ม เช่น "foo" แทนที่จะเป็น "2901"

การปรับปรุงเพิ่มเติมรวมถึงการกำจัดของ android_ids[] อาร์เรย์จาก system/core/libcutils/include/private/android_filesystem_config.h อาร์เรย์นี้ในขณะนี้มีอยู่ในไบโอนิคเป็น array สร้างส่วนตัวอย่างเต็มที่กับ accessors ผ่าน getpwnam() และ getgrnam() (ซึ่งมีผลข้างเคียงของการผลิตไบนารีที่มีเสถียรภาพเป็นสื่อหลักที่มีการปรับเปลี่ยน.) สำหรับเครื่องมือและไฟล์ README มีรายละเอียดเพิ่มเติมโปรดดูที่ build/make/tools/fs_config

การเพิ่มรหัส Android (AIDs)

Android 8.0 ออก android_ids[] อาร์เรย์จาก Android โครงการ Open Source (AOSP) ชื่อ AID ง่ายทั้งหมดถูกสร้างขึ้นแทนจาก system/core/libcutils/include/private/android_filesystem_config.h ไฟล์ส่วนหัวเมื่อมีการสร้างไบโอนิค android_ids[] อาร์เรย์ ใด ๆ ที่ define จับคู่ AID_* จะถูกหยิบขึ้นมาโดยใช้เครื่องมือและ * กลายเป็นชื่อตัวพิมพ์เล็ก

ยกตัวอย่างเช่นใน private/android_filesystem_config.h :

#define AID_SYSTEM 1000

กลายเป็น:

  • ชื่อที่เรียกง่าย: system
  • uid: 1,000
  • gid: 1,000

หากต้องการเพิ่ม AID AOSP หลักใหม่เพียงแค่เพิ่ม #define ไป android_filesystem_config.h ไฟล์ส่วนหัว AID จะถูกสร้างขึ้นที่ build และพร้อมใช้งานสำหรับอินเทอร์เฟซที่ใช้อาร์กิวเมนต์ของผู้ใช้และกลุ่ม เครื่องมือตรวจสอบ AID ใหม่ไม่อยู่ในช่วง APP หรือ OEM นอกจากนี้ยังคำนึงถึงการเปลี่ยนแปลงในช่วงเหล่านั้นและควรกำหนดค่าใหม่โดยอัตโนมัติตามการเปลี่ยนแปลงหรือช่วงที่สงวนไว้สำหรับ OEM ใหม่

การกำหนดค่า AIDs

เมื่อต้องการเปิดใช้กลไกเอดส์ใหม่ชุด TARGET_FS_CONFIG_GEN ใน BoardConfig.mk ไฟล์ ตัวแปรนี้เก็บรายการไฟล์คอนฟิกูเรชัน ช่วยให้คุณสามารถต่อท้ายไฟล์ได้ตามต้องการ

โดยการประชุมแฟ้มการกำหนดค่าใช้ชื่อ config.fs แต่ในทางปฏิบัติคุณสามารถใช้ชื่อใด ๆ config.fs ไฟล์ที่อยู่ใน รูปแบบ INI หลาม ConfigParser และรวมถึงส่วนหมวก (สำหรับการกำหนดค่าความสามารถของระบบไฟล์) และส่วนเอดส์ (สำหรับการกำหนดค่า OEM เอดส์)

การกำหนดค่าส่วนแคป

หมวกส่วนสนับสนุนการตั้งค่า ความสามารถของระบบไฟล์ บนวัตถุระบบแฟ้มภายในสร้าง (ระบบแฟ้มตัวเองยังต้องสนับสนุนการทำงานนี้)

เพราะการเรียกใช้บริการที่มีเสถียรภาพเป็นรากใน Android ที่ทำให้เกิด ความเข้ากันได้ Test Suite (CTS) ความล้มเหลวความต้องการก่อนหน้านี้สำหรับการรักษาความสามารถในขณะที่ใช้กระบวนการหรือบริการที่เกี่ยวข้องกับการตั้งค่าความสามารถแล้วใช้ setuid / setgid ไปปฐมพยาบาลที่เหมาะสมในการวิ่ง ด้วยตัวพิมพ์ใหญ่ คุณสามารถข้ามข้อกำหนดเหล่านี้และให้เคอร์เนลดำเนินการแทนคุณได้ เมื่อควบคุมจะถูกส่งให้ main() กระบวนการของคุณมีความสามารถที่จำเป็นเพื่อให้บริการของคุณสามารถใช้ผู้ใช้ที่ไม่ใช่รากและกลุ่ม (นี่คือวิธีที่ต้องการสำหรับการเริ่มต้นการให้บริการที่มีสิทธิพิเศษ)

ส่วนตัวพิมพ์ใหญ่ใช้ไวยากรณ์ต่อไปนี้:

ส่วน ค่า คำนิยาม
[path] เส้นทางระบบไฟล์ที่จะกำหนดค่า เส้นทางที่ลงท้ายด้วย / ถือเป็น dir ไม่เช่นนั้นจะเป็นไฟล์

มันเป็นข้อผิดพลาดในการระบุหลายส่วนด้วยกัน [path] ในแฟ้มที่แตกต่างกัน ในเวอร์ชัน Python <= 3.2 ไฟล์เดียวกันอาจมีส่วนที่แทนที่ส่วนก่อนหน้า ใน Python 3.2 ถูกตั้งค่าเป็นโหมดเข้มงวด
mode โหมดไฟล์เลขฐานแปด โหมดไฟล์ฐานแปดที่ถูกต้องอย่างน้อย 3 หลัก หากระบุ 3 ระบบจะนำหน้าด้วย 0 มิฉะนั้นจะใช้โหมดตามที่เป็นอยู่
user AID_<ผู้ใช้> ทั้ง C define สำหรับความช่วยเหลือที่ถูกต้องหรือชื่อที่เรียกง่าย (เช่นทั้ง AID_RADIO และ radio ได้) เพื่อกำหนด AID กำหนดเองให้ดูที่ การกำหนดค่าส่วน AID
group AID_<group> เช่นเดียวกับผู้ใช้
caps หมวก* ชื่อตามที่ประกาศใน bionic/libc/kernel/uapi/linux/capability.h โดยไม่ต้องนำ CAP_ อนุญาตให้ผสมกรณี ตัวพิมพ์ใหญ่สามารถเป็นแบบดิบได้:
  • ไบนารี (0b0101)
  • ฐานแปด (0455)
  • อินท์ (42)
  • เลขฐานสิบหก (0xFF)
แยกตัวพิมพ์ใหญ่หลายตัวโดยใช้ช่องว่าง

ยกตัวอย่างเช่นการใช้งานให้ดูที่ การใช้ความสามารถของระบบไฟล์

การกำหนดค่าส่วน AID

ส่วน AID ประกอบด้วย OEM AID และใช้ไวยากรณ์ต่อไปนี้:

ส่วน ค่า คำนิยาม
[AID_<name>] <name> สามารถมีตัวอักษรที่อยู่ในชุดพิมพ์ใหญ่ตัวเลขและขีดล่าง เวอร์ชันตัวพิมพ์เล็กใช้เป็นชื่อที่เป็นมิตร ส่วนหัวของแฟ้มที่สร้างขึ้นสำหรับการรวมรหัสใช้ที่แน่นอน AID_<name>

มันเป็นข้อผิดพลาดในการระบุหลายส่วนด้วยกัน AID_<name> (กรณีตายที่มีข้อ จำกัด เช่นเดียวกับ [path] )

<name> ต้องเริ่มต้นด้วยชื่อพาร์ทิชันเพื่อให้แน่ใจว่ามันไม่ได้มีความขัดแย้งกับแหล่งที่มาที่แตกต่างกัน
value <จำนวน> สตริงตัวเลขสไตล์ C ที่ถูกต้อง (ฐานสิบหก ฐานแปด ไบนารี และทศนิยม)

การระบุหลายส่วนด้วยตัวเลือกค่าเดียวกันถือเป็นข้อผิดพลาด

ตัวเลือกราคาจะต้องมีการระบุไว้ในช่วงที่สอดคล้องกับพาร์ทิชันที่ใช้ใน <name> รายการของพาร์ทิชันที่ถูกต้องและช่วงที่สอดคล้องกันของพวกเขาถูกกำหนดไว้ใน system/core/libcutils/include/private/android_filesystem_config.h ตัวเลือกคือ:
  • พาร์ทิชันผู้จำหน่าย
    • AID_OEM_RESERVED_START(2900) - AID_OEM_RESERVED_END (2999)
    • AID_OEM_RESERVED_2_START(5000) - AID_OEM_RESERVED_2_END (5999)
  • พาร์ติชันระบบ
    • AID_SYSTEM_RESERVED_START(6000) - AID_SYSTEM_RESERVED_END(6499)
  • พาร์ติชั่น ODM
    • AID_ODM_RESERVED_START(6500) - AID_ODM_RESERVED_END(6999)
  • ฉากกั้นสินค้า
    • AID_PRODUCT_RESERVED_START(7000) - AID_PRODUCT_RESERVED_END(7499)
  • พาร์ติชั่น System_ext
    • AID_SYSTEM_EXT_RESERVED_START(7500) - AID_SYSTEM_EXT_RESERVED_END(7999)

สำหรับตัวอย่างการใช้งานดู ชื่อ AID กำหนด OEM และ ใช้ OEM เอดส์

ตัวอย่างการใช้งาน

ตัวอย่างต่อไปนี้มีรายละเอียดวิธีกำหนดและใช้ OEM AID และวิธีเปิดใช้งานความสามารถของระบบไฟล์ ชื่อ OEM AID ([ชื่อ AID_]) จะต้องเริ่มต้นด้วยชื่อพาร์ทิชันเช่น "vendor_" เพื่อให้แน่ใจว่าพวกเขาไม่ได้มีความขัดแย้งกับชื่อ AOSP ในอนาคตหรือพาร์ทิชันอื่น ๆ

การกำหนดชื่อ OEM AID

ต้องการกำหนด OEM AID สร้าง 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 ที่กำหนดเองของคุณได้ในบิลด์ใหม่

การใช้ OEM AIDs

เมื่อต้องการใช้ OEM ช่วยเหลือในรหัส C ของคุณรวมถึง 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 , พาร์ทิชันที่ผู้ขายจะต้องติดตั้ง

การเชื่อมโยงชื่อที่เป็นมิตร

Android 9 รองรับการเชื่อมโยงชื่อที่จำง่ายกับค่า OEM AID จริง คุณสามารถใช้ข้อโต้แย้งสตริงไม่ใช่ตัวเลขสำหรับผู้ใช้และกลุ่มคือ "vendor_ foo" แทน "2901"

แปลงจาก AID เป็นชื่อที่เป็นมิตร

สำหรับ OEM เอดส์ , Android 8.x ต้องใช้ oem_#### กับ getpwnam และฟังก์ชั่นที่คล้ายกันเช่นเดียวกับในสถานที่ที่จับการค้นหาผ่านทาง getpwnam (เช่น init สคริปต์) ใน Android ที่ 9 คุณสามารถใช้ getpwnam และ getgrnam เพื่อน ๆ ในไบโอนิคสำหรับการแปลงรหัสจาก Android (เอดส์) ชื่อที่เป็นมิตรและในทางกลับกัน

การใช้ความสามารถของระบบไฟล์

การเปิดใช้งานความสามารถของระบบแฟ้มสร้างส่วนหมวกใน 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 โทร นอกจากนี้ vendor_ foo นโยบาย SELinux บริการไม่จำเป็นต้องความสามารถ 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 การใช้กฎการจับคู่และการแยกวิเคราะห์สำหรับไดเร็กทอรีและไฟล์ (ซึ่งอาจใช้นิพจน์ glob เพิ่มเติม) ทำให้ Android สามารถจัดการไดเร็กทอรีและไฟล์ในสองตารางที่แตกต่างกัน คำจำกัดความของโครงสร้างใน 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 กับ initializations โครงสร้างต่อไปนี้สำหรับสัญลักษณ์ไดเรกทอรีและไฟล์:

  • สำหรับไดเรกทอรีที่ใช้ 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 ในการกำหนดค่าของคณะกรรมการโดยมีผลบังคับใช้ของ basename 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 ขึ้นไป:

  1. สร้าง $(TARGET_DEVICE_DIR)/android_filesystem_config.h ไฟล์
  2. เพิ่ม fs_config_dirs และ / หรือ fs_config_files เพื่อ PRODUCT_PACKAGES ในแฟ้มการกำหนดคณะกรรมการ (เช่น $(TARGET_DEVICE_DIR)/device.mk )

ลบล้างตัวอย่าง

ตัวอย่างนี้แสดงให้เห็นว่าแพทช์สำหรับเอาชนะ system/bin/glgps ภูตจะเพิ่มการสนับสนุนการปลุกล็อคใน device/ vendor / device ไดเรกทอรี พึงระลึกไว้เสมอว่า:

  • รายการโครงสร้างแต่ละรายการคือโหมด uid gid ความสามารถ และชื่อ system/core/include/private/android_filesystem_config.h จะรวมโดยอัตโนมัติเพื่อให้ # กำหนดอย่างชัดแจ้ง ( 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 filesystem
+** 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 ผู้ผลิตอุปกรณ์ executables ส่วนตัวที่ขึ้นอยู่กับ 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
  • ขอสงวนสิทธิ์ที่จะใช้ SELinux การควบคุมการเข้าถึงบังคับ (MAC) แฟ้มการกำหนดค่าในระบบเป้าหมายการใช้งานที่มีเป้าหมาย executables กำหนดเองโดยใช้ fs_config() ต้องแน่ใจว่าการเข้าถึง