

Windows 10 の PC で android 5.1.1 のタブレット端末に対して `adb shell pm hide` とコマンドを実行すると

[code]

    Error: java.lang.SecurityException: Neither user 2000 nor current process has android.permission.MANAGE_USERS.
    
[/code]

というエラーメッセージが表示されます。

設定が間違っているのでしょうか？  
ご教示いただければ幸いです。  


CC BY-SA 3.0
2017-07-26T04:14:41.873
36685
2017-07-31T08:18:45.770
2017-07-26T08:11:18.827
19110
24584
question
android adb
adb shell pm hide 実行エラー


PackageManager の hide
コマンドのフォーマットは以下であるので、質問文のコマンドは正確には実行されたコマンドにパッケージ名またはコンポーネント名を指定されているかと思います。

[code]

    pm hide [--user USER_ID] PACKAGE_OR_COMPONENT
    
[/code]

* * *

> Error: java.lang.SecurityException: Neither user 2000 nor current  
>  process has android.permission.MANAGE_USERS.

このエラーはUIDが2000のユーザ(uid=2000(shell))、またはコマンドを実行しているプロセス、つまりshellプロセスには`android.permission.MANAGE_USERS`のパーミッションが与えられていないため、セキュリティエラーとなり、コマンドが実行できないということを表しています。

以下のコマンドを実行してshellに該当のパーミッションが与えられているかを確認してください。  
パーミッションがなければ該当コマンドの実行はできません。

[code]

    adb shell dumpsys package com.android.shell
    
[/code]

* * *

補足

手元にある以下の端末では`pm hide`コマンドは実行可能でした。

  * Nexus 5 (Android 5.1.1)
  * Xperia Performance (Android 6.0.1)

H.Hさんの回答にある通り、Android 6.0.1以前の端末では、メーカーの実装依存になると思います。  
[Androidのセキュリティパッチのアナウンス](https://source.android.com/security/bulletin/2016-08-01#elevation-
of-privilege-vulnerability-in-shell)  
[CVEのインフォメーション](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3833)


CC BY-SA 3.0
2017-07-26T08:34:15.197
36691
2017-07-31T08:18:45.770
2017-07-31T08:18:45.770
20272
20272
36685
answer


結論から申しますとrootをとらない限り実行できません。

[code]

    Error: java.lang.SecurityException: Neither user 2000 nor current process has android.permission.MANAGE_USERS.
    
[/code]

のログで示している通りMANAGE_USERSのPermissionを要求されていますが。

下記の通り、MANAGE_USERSはプリインストールされているアプリ以外には付与できません。

<https://android.googlesource.com/platform/frameworks/base/+/master/core/res/AndroidManifest.xml#1708>

[code]

    <permission android:name="android.permission.MANAGE_USERS"
        android:protectionLevel="signature|privileged" />
    
[/code]

またShellに対しても下記セキュリティ対応にてMANAGE_USERSの権限が外されています。  
<https://android.googlesource.com/platform/frameworks/base/+/f5cea03eb036c05cacc711ff90c97a48ffb2bc17%5E%21/>

セキュリティパッチとしての投入なので(メーカー側が対応していれば)OS Version問わず上記パッチがあたっているはずです。


CC BY-SA 3.0
2017-07-27T06:26:44.357
36713
2017-07-27T06:26:44.357
19716
36685
answer