Khả năng môi trường xung quanh

Các khả năng cho phép các quy trình Linux loại bỏ hầu hết các đặc quyền giống như root trong khi vẫn giữ lại tập hợp con các đặc quyền mà chúng yêu cầu để thực hiện chức năng của mình. Việc triển khai các khả năng ban đầu khiến các tiến trình fork+exec'd không thể kế thừa các khả năng trừ khi các tệp đang được thực thi đã được định cấu hình các khả năng của tệp. Ngược lại, các khả năng của tệp sẽ gây ra rủi ro bảo mật vì bất kỳ quy trình nào thực thi tệp có khả năng của tệp sẽ có thể đạt được các khả năng đó.

Các khả năng của môi trường xung quanh cho phép các dịch vụ hệ thống do init khởi chạy để định cấu hình các khả năng trong tệp .rc của chúng, đưa cấu hình vào một tệp duy nhất thay vì chia nhỏ cấu hình trong tệp fs_config.c . Điều này có nghĩa là đối với bất kỳ dịch vụ nào được khởi chạy bởi init, bạn có thể sử dụng tệp .rc được liên kết với dịch vụ đó để định cấu hình các khả năng cho dịch vụ đó.

Khả năng xung quanh là cơ chế ưu tiên để thiết lập khả năng cho các dịch vụ do init khởi chạy (phương pháp này giữ tất cả các khía cạnh của cấu hình dịch vụ trong một tệp .rc duy nhất). Chúng tôi khuyên bạn nên sử dụng các khả năng của môi trường xung quanh thay vì định cấu hình các khả năng của hệ thống tệp bằng phần mũ trong tệp config.fs .

Khi cài đặt khả năng cho các dịch vụ không được khởi chạy bởi init , hãy tiếp tục định cấu hình khả năng của hệ thống tệp bằng fs_config.c .

Kích hoạt khả năng xung quanh

Để kích hoạt các khả năng xung quanh cho một dịch vụ nhất định, hãy sử dụng từ khóa capabilities trong init. Để biết chi tiết về ngôn ngữ init hiện tại, hãy tham khảo init README.md .

Ví dụ: để kích hoạt các khả năng xung quanh cho dịch vụ AOSP wificond , tệp .rc cho dịch vụ wificond sẽ thiết lập người dùng và nhóm phù hợp, đồng thời cung cấp cho dịch vụ các khả năng được chỉ định bằng cách sử dụng từ capabilities :

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

Thực hiện tham khảo

Việc triển khai tham chiếu là hạt nhân chung của Android https://android.googlesource.com/kernel/common/

Các bản vá bắt buộc

Các bản vá bắt buộc đã được chuyển vào tất cả các nhánh hạt nhân phổ biến của Android có liên quan.

Bản vá khả năng xung quanh chính https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58319057b7847667f0c9585b9de0e8932b0fdb08 đã được nhập lại vào:

Một bản sửa lỗi bảo mật nhỏ https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7f76ea2ef6739ee484a165ffbac98deb855d3d3 đã được nhập lại vào:

Thẩm định

Kiểm thử đơn vị sinh học bao gồm kiểm thử đơn vị về khả năng của môi trường xung quanh. Ngoài ra, việc sử dụng từ khóa "khả năng" trong Android init cho một dịch vụ, sau đó kiểm tra xem dịch vụ đó có nhận được các khả năng mong đợi hay không sẽ cho phép thử nghiệm tính năng này trong thời gian chạy.