Android:adb:权限被拒绝


91

无论我输入了什么,adb shell它都会失败Permission denied

D:\android-sdk-windows\platform-tools>adb shell find /data -name *.db
find: permission denied

D:\android-sdk-windows\platform-tools>adb shell test
test: permission denied

D:\android-sdk-windows\platform-tools>adb remount
remount failed: No such file or directory

有任何想法吗?


您在哪里尝试在模拟器或目标设备中运行adb shell;如果在目标设备上,除非拥有root权限,否则您无法访问/ data文件夹。
Vamsi

20
之后adb root>>adbd cannot run as root in production builds怎么办?
d.popov

3
我想您需要一个有根电话才能运行该电话
Caner 2012年

是的我知道。但是,正如您目前所看到的那样,我不具有评论作者帖子的声誉,但是我遇到了这个问题,所以唯一的方法是添加新帖子或打开重复的帖子,因此我决定添加帖子。
d.popov

1
手机已扎根,但操作系统出了点问题。重新启动后加载主屏幕后,它冻结了。无论如何-nandroid用库存ROM刷新手机解决了该问题。
d.popov

Answers:


129

根据adb help

adb root                     - restarts the adbd daemon with root permissions

确实为我解决了这个问题。


2
如果还没有启用,则还需要为adb启用根访问权限-请参阅@Macarse的答案。
保罗·惠特克

实际上,眼前的问题是android仍然没有(在编写后的两年内)附带find命令。就是说,如果没有以root身份运行adb,那么您也将无法使用任何其他命令来降级/ data分区(尽管您仍然可以访问其中的显式位置)。
克里斯·斯特拉顿

1
这不是真的。您只需要切换到正确的用户即可。请参阅下面的答案:stackoverflow.com/a/38292436/342947
Fabian Zeindl '16

2
您的答案不清楚。此注释应该在设备上还是在计算机上执行?
索伦

20
adbd cannot run as root in production builds是你跑步的收获adb root。这是在使用最新的Android SDK的最新MacOS安装上。我认为这个答案根本不正确,而且我已经看到其他人提到了这个问题。为什么这么多投票?
安德鲁·科斯特

39

不生根:如果无法生根电话,请使用run-as <package>命令访问应用程序的数据。

例:

$ adb exec-out run-as com.yourcompany.app ls -R /data/data/com.yourcompany.app/

exec-out 在不启动外壳程序和不处理输出的情况下执行命令。


9
这仅适用于构建为可调试的应用程序-即,您可以将其用于正在开发的应用程序,但不适用于您的应用程序的生产版本或任何其他人的应用程序。
克里斯·斯特拉顿

2
run-as: Could not set capabilities: Operation not permitted给我回来了
Tom M

它适用于模拟器API 29,并且不要忘记在.debug调试程序的应用包末尾加上前缀:
Ultraon

19

“权限被拒绝”的原因是因为您的Android计算机未正确植根。$开始之后您看到了adb shell吗?如果您正确地将计算机植根,那么您将会看到#

如果看到$,请尝试通过键入进入超级用户模式su。如果启用了根,您将看到#-而不要求输入密码。


2
正确植根计算机后,您需要启用adb根目录访问权限并以root模式运行adb,然后此su步骤才能起作用-请参阅@Macarse和@Roman的答案。
保罗·惠特克

1
不可以find。“权限被拒绝”的原因是没有命令。
克里斯·斯特拉顿

@ChrisStratton您救了我的命,我也已经从adb shell内写了shell命令
Divyanshu Kushwaha

1
我正在尝试在Android模拟器中查看文件。我在“ $”后面输入“ su”,它说:su:未找到
Pete Alvin

5

您可能需要从开发人员设置菜单激活adb root。如果adb root从cmd行运行,则可以得到:

root access is disabled by system setting - enable in settings -> development options

激活根选项(仅ADB或Apps和ADB)后,adb将重新启动,您将能够在cmd行中使用root。


3
如果在“设置”菜单中看不到“开发人员选项”项,请参见此答案以了解如何使其可见。(简而言之:设置>关于手机>内部号码>点按7次(!)。)
Paul Whittaker 2013年

1
但是一旦进入,我在这里什么都看不到!应该说什么
JohnyTex 2014年

35
此选项在Android内部版本中不存在-如果完全存在,它将被限制在某人的售后ROM中。
克里斯·斯特拉顿

没有GUI,有没有办法做到这一点?我猜在中有一个选项/system/build.prop,但是我找不到。
Jeroen

在哪里可以找到菜单以查找设置?
martinkunev

0

小心使用斜杠,将“ /”更改为“ /”,如下所示:adb.exe push SuperSU-v2.79-20161205182033.apk / storage


0

data 非root用户无法访问该分区,如果要访问它,则必须对手机进行root访问。

adb root 不适用于所有产品,并且取决于手机的型号。

在android studio上的新版本中,您可以探索/data/data可调试应用程序的路径。




By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.