Các chức năng của chế độ môi trường xung quanh

Các chức năng này cho phép quy trình Linux loại bỏ hầu hết các đặc quyền giống ở cấp thư mục gốc trong khi giữ lại một nhóm nhỏ đặc quyền mà các ứng dụng này cần để 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 cho fork+exec không thể thực hiện được các quy trình kế thừa các khả năng trừ phi các tệp đang được thực thi có tệp các chức năng đã được định cấu hình. Các chức năng của tệp lần lượt sẽ gây ra rủi ro bảo mật vì mọi quy trình thực thi một tệp có các chức năng của tệp đều có thể nhận được những khả năng đó.

Các chức năng của Chế độ 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 trong các tệp .rc của họ, việc tích hợp cấu hình vào thay vì chia tách cấu hình trong fs_config.c. Điều này có nghĩa là đối với bất kỳ dịch vụ nào được phát hành bởi init, bạn có thể dùng tệp .rc liên kết với dịch vụ để định cấu hình các chức năng cho dịch vụ đó.

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

Khi thiết lập tính năng cho các dịch vụ không phải do init khởi chạy, để tiếp tục định cấu hình các tính năng của hệ thống tệp bằng cách sử dụng fs_config.c.

Bật các tính năng theo môi trường xung quanh

Để bật các chức năng theo môi trường xung quanh cho một dịch vụ cụ thể, hãy sử dụng capabilities từ khoá trong khởi tạo. Đối với ngôn ngữ init hiện tại thông tin chi tiết, hãy tham khảo init README.md.

Ví dụ: để bật các chức năng môi trường xung quanh cho dịch vụ AOSP (Dự án nguồn mở Android) wificond, Tệp.rc cho dịch vụ wificond, hãy thiết lập các thuộc tính thích hợp người dùng và nhóm, đồng thời cung cấp cho dịch vụ những khả năng đã chỉ định bằng cách sử dụng Từ khoá capabilities:

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

Cách triển khai tệp đối chiếu

Cách triển khai tham chiếu là nhân hệ điều hành phổ biến của Android https://android.googlesource.com/kernel/common/

Bản vá bắt buộc

Các bản vá bắt buộc đã được điều chỉnh cho phiên bản cũ tất cả nhân hệ điều hành Android chung có liên quan cành cây.

Bản vá các chức năng môi trường xung quanh chính https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58319057b7847667f0c9585b9de0e8932b0fdb08 đã được điều chỉnh cho phiên bản cũ:

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 điều chỉnh cho phiên bản cũ:

Xác nhận kết quả

Bionic kiểm thử đơn vị bao gồm kiểm thử đơn vị cho các khả năng môi trường xung quanh. Ngoài ra, việc sử dụng "khả năng" từ khoá trong Android khởi tạo cho một dịch vụ rồi kiểm tra dịch vụ nhận được các khả năng dự kiến sẽ cho phép kiểm thử trong thời gian chạy tính năng này.