Android4.1/JBで追加されたマルチユーザー(ユーザー切り替え)機能とサンドボックスセキュリティについて

http://blog.2maru.com/archives/1735

Android4.1/JBでは、root権限が必要ですが、実際にユーザーを作成し、削除することができます。また、実際にUIからユーザーを切り替えて使用することができます。

インストール済みのアプリはそのまま引き継がれますが、その他のユーザーデータは引き継がれず、端末の初期セットアップ状態と同じ状態になります。

追加したユーザーが設定アプリを実行すると、設定項目が大幅に少なくなっていることがわかります。

# pm create-user [username]
# pm list-users

/data/user配下には、ユーザー毎にPrimaryユーザのユーザデータ(/data/user/0は/data/dataへのシンボリックリンク)のコピーが作成されます。

これにより、同じアプリでも、ユーザーによって付与されるUIDが異なることがわかります。

</data/system/users>
ユーザーを管理するためのデータが保存されます。

[/data/system/users/userlist.xml]
登録されているユーザーの一覧を管理しているファイルです。

[/data/system/users/ユーザー番号.xml]
各ユーザーの情報を管理しているファイルです。

[/data/system/users/ユーザー番号]
各ユーザーの情報を管理しているディレクトリです。

pmコマンドには、パッケージが要求するパーミッション(Android4.1/JBではprotectionLevelが"development"のpermissionに限られる)に対して許可を与えたり(grant)、取り消す(revoke)ことができるようです。

ようやくマトモになってきたな。