非rootでマルチユーザーを有効化する方法(失敗)
最近は枯れた端末の開発がメインになって新しい機種の事情に疎くなりがちなのですが、docomo版Xperia Z5シリーズを除いて、Xperiaの国内キャリアモデルはマルチユーザー機能が塞がれていると聞きます。そもそも自分がマルチユーザー機能を使ったことがないので全く興味が無かったのですが、同じ端末上でソシャゲの複アカ運用で使うという話を聞いたときはなるほどな、と思いましたね。
マルチユーザーを有効化する手順は割とあちこちのブログでまとめられていて目新しさはありませんが、どこも大体root化が必要であると書いています。
# Multi Users fw.max_users=3 fw.show_multiuserui=1
こんな具合にbuild.propに追記する方法ですね。
しかし、Androidのシステムプロパティを設定する方法はbuild.propの編集に限りません。
同じ事をadb shellから行うとどうなるか試してみました。
実践
私のZ3 Compactはroot化してあるので本当に非rootで同じ事ができるのか自信はありませんが、SuperSUからrootを無効化して行いました。端末とPCをつないでコマンドプロンプトから以下を打ち込みます。
adb shell setprop fw.max_users 3 setprop fw.show_multiuserui true
すると、ちゃんと端末の方でもマルチユーザーの設定が見えるようになりました。
解説
おそらく、shell権限で実行しているのでコマンドが通るのでしょう。同じ事を端末上のアプリからしても拒否されます。ただ、setpropで設定する値は一時的なものなので、build.propと違って端末を再起動する度にPCから同じ操作をして設定を再表示する必要があります。もっとも、最近では再起動の頻度も減っていますから、何も出来ないよりかはマシというところですね。
今後の展望
上記と同じコマンドを発行するアプリを作って手軽に扱えるようにしようと思ったのですが、アプリの権限ではコマンドが拒否されてしまったので使い物になりませんでした。脆弱性になるのでまず無理でしょうが、アプリにシェル権限を持たせることができれば、ずっと面白くなるのになと思います。
今後はどんどんセキュリティが厳しくなって、リテールデバイスをユーザーがカスタマイズする余地が狭まってくるでしょうから、こういった非rootでもシステムの一端に触れられるような小技を探していきたいなと思います。
非rootユーザーの方で試される方がいれば、結果を是非教えてください。
訂正
これでいけるだろうと高を括っていたのですが、コメントで報告頂いたところによると上手くいかないようですね。もしかすると、自分でも覚えていないうちにroot権限でsetpropをしていて、その形跡が残っていたのかも知れません。やはりそう易々とは遊ばせてくれないようですね。報告頂いた方、ありがとうございました。
2 コメント
Write コメント非rootのZ3C SO-02G(root化経験なし)で試してみましたが、ダメでした。
Reply同じくZ3C(現在非root)でやってみましたが駄目でした...root化されてるものは切っていても何かあるんですかね?
ReplyEmoticon Emoticon