Mặc dù câu hỏi đã cũ nhưng nó vẫn xuất hiện trên đầu câu hỏi chưa được trả lời (thẻ của tôi) . Vì vậy, tôi nghĩ rằng tôi nên trả lời này :)
HOS TRỢ CỦA AOSP CHO NĂNG LỰC:
Câu hỏi cụ thể là về các thiết bị của Google, tôi chưa bao giờ sử dụng thiết bị Google. Tuy nhiên, điều tôi có thể nói chắc chắn là các khả năng của Linux (quy trình) phải được kích hoạt trên hầu hết các thiết bị (nếu không phải tất cả) chạy ở mức thấp như Android 1.6. Tham chiếu được tìm thấy trong init
và system_server
, cả hai thành phần chính của AOSP. Ví dụ, trong Android 4.2 installd
- một thành phần cốt lõi khác - được tạo ra để chạy với khả năng bị bỏ.
Các khả năng của hệ thống tệp là một trong những Cải tiến bảo mật chính trong Android 4.3 đã loại bỏ set-uid
/ set-gid
khỏi các tệp nhị phân như run-as
, thiết lập các khả năng của tệp trên chúng. Điều này gây ra những thay đổi mang tính cách mạng trong hành trình root của Android.
Hỗ trợ cho các khả năng của Ambient đã được thêm vào Android 8, điều này không khuyến khích việc sử dụng các khả năng của tệp:
Ngược lại, các khả năng của tệp có rủi ro bảo mật do mọi quá trình thực thi tệp có khả năng tệp sẽ có thể đạt được các khả năng đó.
Nhiều init
dịch vụ phụ thuộc vào họ storaged
, ví dụ , bao gồm cả dịch vụ sshd
và dnscrypt-proxy
dịch vụ của tôi .
HPORT TRỢ CỦA NỀN TẢNG CHO NĂNG LỰC:
Đến với phần kernel, việc xây dựng kernel không có khả năng không phải là tùy chọn:
Từ kernel 2.5.27 đến kernel 2.6.26, các khả năng là một thành phần kernel tùy chọn và có thể được bật / tắt thông qua tùy chọn cấu hình kernel CONFIG_SECURITY_CAPABIL khoáng .
Và:
Trong các hạt nhân trước Linux 2.6.33, các khả năng của tệp là một tính năng tùy chọn có thể định cấu hình thông qua tùy chọn CONFIG_SECURITY_FILE_CAPABILEER . Kể từ Linux 2.6.33, tùy chọn cấu hình đã bị xóa và các khả năng của tệp luôn là một phần của kernel.
Phiên bản kernel phổ biến lâu đời nhất trên kho Android là 2.6,39 bao gồm hỗ trợ cho khả năng của tệp.
Hỗ trợ cho các khả năng của hệ thống tập tin ở phía kernel phải bị trì hoãn từ một số OEM nhưng chúng phải chuyển đổi, vì nếu không các chức năng sẽ bị hỏng. Chẳng hạn surfaceflinger
( nhà soạn nhạc bề mặt của Android ) sẽ không hoạt động nếu không có khả năng tệp kể từ Android 7.1.
Mainline Linux kernel 4.3 đã được vá trong trong Sep'15 cho khả năng (quá trình) Ambient, backported Android kernel 3.18 và 4.1 trong năm 2016. Vì vậy, họ nhất thiết phải là một phần của kernel.
PHẦN KẾT LUẬN:
Trên các bản phân phối Linux, rất ít chương trình sử dụng các khả năng của Linux. Mặc dù có pam_cap
, chủ yếu là (hoặc tất cả?) Distro vẫn sử dụng set-uid
trên su
, sudo
, ping
, mount
, passwd
và vân vân. Nhưng trên các khả năng của Android được tích hợp sâu trong các dịch vụ khung và cốt lõi. Loại bỏ chúng sẽ yêu cầu chỉnh sửa hàng trăm hoặc có thể là hàng ngàn dòng trong AOSP và nguồn kernel. Không có nghĩa là một OEM (đặc biệt là Google, người đã phát triển AOSP và nhân Linux đã sửa đổi cho Android) không sử dụng tính năng bảo mật miễn phí này khi nó có sẵn trong nhân Android. Đây là một tính năng liên quan đến hệ điều hành thuần túy, không yêu cầu bất kỳ hỗ trợ phần cứng bổ sung nào. Vì vậy, bất kỳ điện thoại từ bất kỳ nhà sản xuất phải có khả năng hỗ trợ.
CÂU HỎI:
Tôi có thể thiết lập các khả năng trên các tệp thực thi mà không thay đổi nhị phân kernel gốc không?
Vâng, bạn phải có.
Những thứ bắt buộc là công cụ để thiết lập mũ ...
Tôi đã được sử dụng capsh
, getcap
, setcap
, getpcaps
từ libcap
và netcap
, pscap
từ libcap-ng
mà không cần bất kỳ vấn đề. Nhưng tôi thích các khả năng của Ambient, chúng dễ cấu hình và không phụ thuộc vào bất kỳ tính năng nào của hệ thống tệp như Thuộc tính mở rộng như trong trường hợp khả năng của tệp. Bạn cũng có thể sử dụng listxattr
, getxattr
, setxattr
và removexattr
các công cụ từ xattr_syscall_wrapper
để thao tác security.capability
hoặc bất kỳ xattr khác trực tiếp.
Từ bình luận của bạn:
Tôi chỉ nhận thấy /system/bin/ping
lệnh không có setuid
trên thiết bị Samsung thực sự của mình, gợi ýCAP_NET_RAW
Android của ping không có set-uid
cũng không CAP_NET_RAW
. Nó tạo ra một ổ cắm không phải RAW đặc biệt IPPROTO_ICMP
- không giống như IPPROTO_RAW
- không yêu cầu bất kỳ đặc quyền nào.
THÊM TÀI LIỆU THAM KHẢO:
Ngoài hơn 10 tài liệu tham khảo được đưa ra ở trên, đây là một vài phần khác của mã AOSP hỗ trợ và sử dụng các khả năng của Linux:
- Thành phần cốt lõi: Bionic
libc
, init
, trusty
(OS)
- Các thành phần bên ngoài :
libcap
,libcap-ng
- Daemon / dịch vụ:
zygote
(ứng dụng chia hai và system_server
), hostapd
, wpa_supplicant
, dnsmasq
, logd
, netd
( NetLink
giám đốc, DNS tư nhân), debuggerd
(thử nghiệm), sdcard
daemon, performanced
, incidentd
, mtpd
, traced_probes
(Perfetto), racoon
(IPSec), wificond
, một số daemon HAL bao gồm rild
.
- Thực thi:
reboot
(init), dumpstate
, tcpdump
, strace
, iputils
( ping
, traceroute
vv)
- Minijail: Một công cụ và thư viện hộp cát chuyên dụng xoay quanh các khả năng.
adbd
sử dụng thư viện này để bỏ đặc quyền.
- SELinux sử dụng
capability
lớp để cấp / từ chối các khả năng cho các miền.
Nó kết luận rằng Android phụ thuộc nhiều vào khả năng của Linux, đây không phải là một tính năng ít được sử dụng .
LIÊN QUAN: