ความสามารถด้านสภาพแวดล้อม

ความสามารถช่วยให้กระบวนการของ Linux ทิ้งสิทธิ์ที่มีลักษณะคล้ายรูทส่วนใหญ่ได้ในขณะที่ คือการรักษาสิทธิ์บางส่วนที่จำเป็นต่อการทำงาน การใช้ความสามารถดั้งเดิมทำให้ไม่สามารถ Fork+exec กระบวนการเพื่อสืบทอดความสามารถ เว้นแต่ว่าไฟล์ที่เรียกใช้นั้นมีไฟล์ ที่กำหนดค่าไว้แล้ว ซึ่งทำให้ความสามารถของไฟล์ก่อให้เกิดความเสี่ยงด้านความปลอดภัย เนื่องจากกระบวนการใดๆ ที่ดำเนินการไฟล์ที่มีความสามารถเกี่ยวกับไฟล์จะได้รับ ความสามารถเหล่านั้น

ความสามารถแวดล้อมทำให้บริการของระบบที่ Init เปิดตัวสามารถกำหนดค่า ในไฟล์ .rc เพื่อเพิ่มการกำหนดค่าลงในไฟล์ ไฟล์เดียวแทนการแยกการกำหนดค่าใน fs_config.c ซึ่งหมายความว่าสำหรับบริการใดๆ ที่เปิดตัวโดย คุณสามารถใช้ไฟล์ .rc ที่เชื่อมโยงกับบริการดังกล่าวเพื่อ กำหนดค่าความสามารถของบริการนั้น

ความสามารถในการทำงานแวดล้อมเป็นกลไกที่แนะนำให้ใช้สำหรับการตั้งค่าความสามารถ สำหรับบริการที่เปิดตัวโดย init (วิธีนี้จะเก็บทุกแง่มุมสำหรับบริการ ในไฟล์ .rc ไฟล์เดียว) เราขอแนะนำให้ใช้แอมเบียนท์ ความสามารถแทนที่จะเป็น การกำหนดค่าไฟล์ ความสามารถของระบบโดยใช้ส่วนตัวพิมพ์ใหญ่ใน config.fs ไฟล์

เมื่อตั้งค่าความสามารถสำหรับบริการที่ไม่ได้เปิดตัวโดย init กำหนดค่าความสามารถของระบบไฟล์ต่อไปโดยใช้ fs_config.c

เปิดใช้ความสามารถด้านแอมเบียนท์

หากต้องการเปิดใช้ความสามารถด้านแอมเบียนท์สำหรับบริการที่ระบุ ให้ใช้ มีคีย์เวิร์ด capabilities คำใน init สำหรับภาษา Init ปัจจุบัน ดูรายละเอียดได้ที่ init README.md

เช่น เพื่อเปิดใช้ความสามารถในการแอมเบียนท์สำหรับบริการ AOSP wificond ไฟล์.rc สำหรับบริการ wificond ให้ตั้งค่า ผู้ใช้และกลุ่ม และให้บริการความสามารถที่ระบุโดยใช้ คีย์เวิร์ด capabilities รายการ:

service wificond /system/bin/wificond
    class main
    user wifi
    group wifi net_raw net_admin
    capabilities NET_RAW NET_ADMIN

การใช้งานข้อมูลอ้างอิง

การใช้งานข้อมูลอ้างอิงคือเคอร์เนลทั่วไปของ Android https://android.googlesource.com/kernel/common/

แพตช์ที่จำเป็น

แพตช์ที่จำเป็นได้มีการพอร์ตไปยังเคอร์เนลทั่วไปของ Android ที่เกี่ยวข้องทั้งหมดแล้ว กิ่งก้าน

แพตช์หลักด้านความสามารถด้านสภาพแวดล้อม ถูกย้อนกลับใน:

วิธีแก้ไขด้านความปลอดภัยเล็กน้อย https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3 ถูกย้อนกลับใน:

การตรวจสอบความถูกต้อง

ไบโอนิก การทดสอบ 1 หน่วยจะรวมถึงการทดสอบ 1 หน่วยสำหรับความสามารถด้านแอมเบียนท์ นอกจากนี้ การใช้ "ความสามารถ" ใน Android init สำหรับบริการหนึ่งๆ แล้วตรวจสอบว่า บริการได้รับความสามารถที่คาดไว้ ทำให้สามารถทดสอบรันไทม์ของ ฟีเจอร์นี้