可以为root设备授予哪些权限?

时间:2013-12-30 06:33:38

标签: android adb root android-permissions

简短而简单的问题:

rooted devices可以在运行时授予应用程序额外的权限(使用adb的“grant permission”命令,我记得)。这方面的一个示例是能够读取系统日志,该日志从API16开始成为非用户权限(链接here)。

是否有此类权限的列表?

1 个答案:

答案 0 :(得分:14)

您可能会想到的命令是pm grant PACKAGE PERMISSION,可以使用adb shell pm grant PACKAGE PERMISSION将其发送到adb连接的设备。

但是,只能以这种方式授予或撤消可选权限。如果您尝试在应用程序的清单中授予未请求的权限,则您将获得Operation not allowed: java.lang.SecurityException: Package PACKAGE has not requested permission PERMISSION。同样,如果您尝试撤销不被视为可选的权限,则您将获得Operation not allowed: java.lang.SecurityException: Can't change PERMISSION. It is required by the application。即使对于有根设备或模拟器也是如此。

现在,就被认为是可选的'以及获取此类权限的列表而言,这有点不清楚。但是,根据一些实验,我认为这些至少包括分配给权限组android.permission-group.DEVELOPMENT_TOOLS的权限集。您可以使用pm list permissions -g查看正在运行的设备上的这些内容。在我的API 19仿真器以及运行AOSP 4.4.4的Nexus 7上,这些是:

group:android.permission-group.DEVELOPMENT_TOOLS
  permission:android.permission.ACCESS_ALL_EXTERNAL_STORAGE
  permission:android.permission.SIGNAL_PERSISTENT_PROCESSES
  permission:android.permission.READ_LOGS
  permission:android.permission.SET_ALWAYS_FINISH
  permission:android.permission.WRITE_SECURE_SETTINGS
  permission:android.permission.SET_PROCESS_LIMIT
  permission:android.permission.CHANGE_CONFIGURATION
  permission:android.permission.DUMP
  permission:android.permission.SET_DEBUG_AP

如果(且仅当)在清单中声明了这些,则可以使用上述命令授予/撤销它们。请注意,安装时不会自动授予它们;您必须发出pm grant命令。我能够通过使用“设置”应用观察并确认这一点,并在我授予和撤消它们时看到报告的权限发生变化。

可能还有其他权限,但我还没有找到它们。像android.permission.INTERNET这样的普通权限无法以这种方式授予或撤销。

附录:关于pm set-permission-enforced PERMISSION的评论部分中的每个附加问题:据我所知,目前唯一支持的权限是android.permission.READ_EXTERNAL_STORAGE。我在阅读source code时基于此陈述,这与我使用该命令的经验一致。此权限的选择性强制设置的目的是允许在API {19}之前和之后的条件下测试应用程序{。{3}}。

相关问题