Учитывая, что каждое приложение работает как отдельный пользователь, что происходит, когда вы хотите добавить новую учетную запись пользователя?

В соответствии с этим , каждое приложение в Android работает как отдельный пользователь на уровне ядра с уникальным идентификатором пользователя и идентификатором группы.

Итак, что происходит под капотом, когда вы добавить нового пользователя (например, на общий планшет)?

7 голосов | спросил Reflection 27 Jpm1000000pmMon, 27 Jan 2014 16:07:39 +040014 2014, 16:07:39

2 ответа


17

Идентификаторы пользователей Linux , которые Android использует для изоляции приложений друг от друга, полностью не связаны с профилями пользователей на планшетах Android 4.2.

В Android каждое приложение получает свой собственный каталог для сохранения данных. Система ID пользователя Linux используется, чтобы убедиться, что приложения не могут читать данные друг друга. Но все эти каталоги данных находятся внутри одного каталога в файловой системе, /data/user/0. Скажем, первый пользователь называется Abulurd, и он устанавливает приложение Showr. Ему может быть присвоен идентификатор пользователя 1004, а каталог /data/user/0/com.shadowburst.showr.

Теперь, скажем, вы создаете новый профиль пользователя для Beatrice. Она получает новый каталог, /data/user/1, который начинается с пустого. Когда она входит в устройство и устанавливает Showr, он не загружает приложение еще раз (поскольку установщик приложений Android знает, что файл APK уже находится на устройстве), но он создает новый идентификатор пользователя 1007 (например), и новый каталог /data/user/1/com.shadowburst.showr.

Android использует права на файловую систему Linux и различные идентификаторы пользователей Linux, а не только для того, чтобы Abururd's Showr не смог прочитать данные других приложений Abulurd, но также, что Showr Abulurd не может прочитать данные Beatrice's Showr. Два экземпляра Showr запускаются в разных процессах с разными идентификаторами пользователей.

Если вы знакомы с терминологией Linux, создание нового профиля пользователя аналогично использованию chroot на устройстве, чтобы получить изолированный часть файловой системы для запуска приложений.

То, что я описал, является обычным процессом, но так же, как приложения могут быть написаны для совместного использования каталога данных с другими приложениями тем же разработчиком (подписанным с тем же ключом), Android дает приложениям возможность сказать, что они работают с несколько пользователей. Таким образом, приложение может быть записано, чтобы иметь один процесс для всех профилей пользователей, чтобы они обменивались данными или выполняли какую-то специальную функцию. Экран блокировки должен работать таким образом, например, потому что все профили пользователей используют одно приложение блокировки экрана, которое должно читать все блокировки экрана пользователя.

ответил Dan Hulme 27 Jpm1000000pmMon, 27 Jan 2014 17:12:08 +040014 2014, 17:12:08
2

Что происходит, когда вы добавляете новую учетную запись пользователя, создается новая учетная запись (или «Профиль пользователя»). Это не имеет ничего общего с управлением пользователя /группы на OS-Level. Вы заметите, что большинство практик (например, этот на HowToGeek ) говорит о счетах , так как термин« пользователь »будет довольно вводить в заблуждение.

Я не разработчик Android, поэтому я не могу дать вам более глубокое техническое объяснение. Но, насколько я знаю, многопользовательская функция реализована поверх ядра Linux (то есть в Java /Dalvik). EDIT: Дэн отправил свой ответ одновременно с моим, поэтому см. там для технического фона:)

ответил Izzy 27 Jpm1000000pmMon, 27 Jan 2014 17:12:28 +040014 2014, 17:12:28

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132