ความสามารถช่วยให้กระบวนการของ 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 ที่เกี่ยวข้องทั้งหมดแล้ว กิ่งก้าน
แพตช์หลักด้านความสามารถด้านสภาพแวดล้อม ถูกย้อนกลับใน:
- Android-3.18
- Android-4.1:
วิธีแก้ไขด้านความปลอดภัยเล็กน้อย https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3 ถูกย้อนกลับใน:
- Android-3.18
- Android-4.1:
การตรวจสอบความถูกต้อง
ไบโอนิก การทดสอบ 1 หน่วยจะรวมถึงการทดสอบ 1 หน่วยสำหรับความสามารถด้านแอมเบียนท์ นอกจากนี้ การใช้ "ความสามารถ" ใน Android init สำหรับบริการหนึ่งๆ แล้วตรวจสอบว่า บริการได้รับความสามารถที่คาดไว้ ทำให้สามารถทดสอบรันไทม์ของ ฟีเจอร์นี้