Google đã ghi lại cả tính năng nhiều người dùng và API được liên kết để hiển thị những gì ứng dụng có thể làm với nó.
Đằng sau, tính năng đa người dùng dựa trên hệ thống đa cấp của Selinux (MLS, hay còn gọi là đa danh mục), trong đó mỗi người dùng được liên kết với danh mục SELinux của riêng mình (cụ thể là trình bày Selinux của NSA trong Lollilop và Marshmallow để tham khảo, đặc biệt slide 13 và 14). Điều này cung cấp một sự tách biệt rất mạnh mẽ và đáng tin cậy giữa những người dùng, được thi hành ở cấp độ nhân của Android và do đó khó có thể bỏ qua.
Trong chương trình này, có các nguồn lực công cộng và tư nhân. Tài nguyên công cộng được chia sẻ giữa tất cả người dùng, trong khi tài nguyên riêng là tài sản riêng của mỗi người dùng và người khác không thể truy cập được.
- Tài nguyên công cộng bao gồm hầu hết các ứng dụng được cài đặt và cấu hình điện thoại toàn cầu. Lưu ý rằng bạn có thể hạn chế cách người dùng thứ cấp có thể sử dụng thiết bị, ví dụ người dùng thứ cấp có thể bị ngăn không cho bất kỳ cuộc gọi điện thoại nào.
- Tài nguyên cá nhân bao gồm chủ yếu là cài đặt của người dùng cục bộ, ứng dụng cục bộ và dữ liệu của người dùng.
Bây giờ hãy xem những hậu quả cụ thể của những tuyên bố này là gì (Tôi sử dụng lại quy ước người dùng Foo của bạn với tư cách là người dùng chính và người dùng Bar làm người dùng thứ cấp).
Nếu tôi tạo một người dùng thứ cấp và cài đặt một ứng dụng trong khi sử dụng điện thoại với tư cách là người dùng đó, liệu các quyền cho ứng dụng đó có được chuyển cho người dùng chính không?
Các ứng dụng đã cài đặt được coi là tài nguyên công cộng, do đó, nếu Bar người dùng cài đặt một ứng dụng thì ứng dụng tương tự cũng sẽ có sẵn cho người dùng Foo, ngay cả khi người dùng Foo không bao giờ chấp nhận một cách rõ ràng các quyền yêu cầu của ứng dụng.
Tuy nhiên, Bar người dùng sẽ không có cách nào để làm cho ứng dụng chạy vào hồ sơ của Foo, cũng không có quyền truy cập vào dữ liệu riêng tư của Foo. Ngoài ra, ngoại trừ trường hợp ứng dụng độc hại bị lỗi nặng hoặc hết sức nghiêm trọng (ví dụ: ứng dụng sao chép dữ liệu riêng tư vào một số vị trí được chia sẻ), cả Foo và Bar đều có thể chạy ứng dụng, dữ liệu riêng tư của Foo và Bar sẽ vẫn an toàn (họ có thể thậm chí sử dụng nó cùng một lúc nếu ứng dụng hỗ trợ nó, nếu không, nó sẽ đơn giản từ chối khởi động hoặc gặp sự cố).
Ví dụ: giả sử tôi có một người dùng chính, Foo, với tài khoản Google foo @ gmail. Sau đó tôi tạo Thanh người dùng bằng tài khoản bar @ gmail. Trong khi sử dụng điện thoại làm Bar, tôi cài đặt một ứng dụng có quyền "tìm tài khoản trên thiết bị".
Điều này có cho phép ứng dụng xem các tài khoản tôi đã đăng ký với tài khoản chính không, ví dụ như foo @ gmail?
Tôi chỉ muốn cảnh báo không nhầm lẫn quyền "Tìm tài khoản trên thiết bị" với tính năng nhiều người dùng không liên quan. Mỗi người dùng có danh sách tài khoản riêng được coi là thông tin riêng tư và do đó không được chia sẻ cho bất kỳ người dùng thiết bị nào khác.
Khi Bar chạy ứng dụng, chỉ các tài khoản của Bar sẽ khả dụng, trong khi đó khi Foo chạy ứng dụng thì chỉ có các tài khoản của Foo.
Thậm chí nó có thể tìm thấy người dùng chính hay có ranh giới cứng giữa "không gian làm việc" của người dùng (vì không có thuật ngữ tốt hơn) và theo như ứng dụng có thể thấy, chỉ có Bar và tài khoản đã đăng ký trên thiết bị ?
Danh sách người dùng dường như được coi là thông tin công khai, rất có thể là sự kế thừa lịch sử thế giới Unix vì tôi không thấy bất kỳ lý do kỹ thuật nào cho việc này. Cá nhân tôi sẽ đánh giá cao nếu không phải như vậy (ví dụ: người dùng nhiều hộp cát trong suốt hơn người dùng Unix tiêu chuẩn, ít nhất là miễn là các ứng dụng không được cấp một số quyền cụ thể).
Dù sao, trang tài liệu API Android được liên kết ở đầu bài đăng này liệt kê các phương pháp mà ứng dụng có thể sử dụng để thu thập thông tin về người dùng hiện tại và người dùng khác. Hầu hết trong số họ dường như không yêu cầu bất kỳ sự cho phép cụ thể.
Tôi thường chỉ quan tâm đến các ứng dụng tìm hiểu về dữ liệu cá nhân, danh bạ, email, v.v. và muốn sử dụng tài khoản "giả" cho bất kỳ ứng dụng nào tôi cho là thù địch trong vấn đề này. Điều này sẽ làm việc?
Vâng, tôi thậm chí nghĩ rằng đây có thể là một ý tưởng rất hay, chỉ cần chắc chắn có trong tài khoản giả của bạn khi khởi chạy nó vì cùng một ứng dụng cũng có thể có sẵn cho người dùng chính của bạn.
Ghi chú khả năng sử dụng:
Tính năng nhiều người dùng trong các hệ thống Android vẫn còn rất trẻ và chưa trưởng thành. Điều này có nghĩa là có những thay đổi tác động giữa phiên bản Android và các vấn đề tương thích.
Ví dụ:
- Loại người dùng và xử lý ủy quyền: cách người dùng chính và / hoặc nền tảng quản trị thiết bị trung tâm của công ty có thể xác định hoặc hạn chế quyền của người dùng thứ cấp / bị hạn chế / hồ sơ / khách về mặt chức năng và ứng dụng họ có thể sử dụng hoặc cài đặt phải chịu những thay đổi lớn giữa Android phiên bản và thiết bị cơ bản (trong khi vẫn chạy Android, máy tính bảng có thể cung cấp các tùy chọn khác với điện thoại di động).
- Điều tương tự cũng áp dụng cho cách cài đặt ứng dụng, yêu cầu cấp phép, chia sẻ và gỡ cài đặt ứng dụng (chúng có thể được cung cấp trực tiếp, chúng có thể được hiển thị nhưng được đánh dấu "Không được cài đặt cho người dùng này" , chúng có thể không hiển thị trong khi vẫn để lại APK có sẵn, v.v.).
- Một số tính năng có thể đến và đi giữa trạng thái bị hỏng và cố định giữa các phiên bản ( cài đặt "Cho phép nguồn không xác định" cho người dùng thứ cấp đã được báo cáo là không có sẵn cho 5.0, đã sửa trong 5.1, bị hỏng trong 6.0, được sửa lại trong 6.0.1).
- Một số ứng dụng có thể không hoạt động khi sử dụng người dùng thứ cấp ( ví dụ F-Droid ).
Vẫn còn những gì tôi cho là thiếu tính năng, ví dụ, không có cách nào thích hợp để người dùng đăng xuất .