Android: adb: permissão negada

93

Tudo o que eu digito depois adb shellque falha com 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

Alguma ideia?

Caner
fonte
Onde você está tentando executar o shell adb, no emulador ou dispositivo de destino; se estiver no dispositivo de destino, você não poderá acessar a pasta / data até a menos que tenha permissão de root.
Vamsi
21
depois adb root>> adbd cannot run as root in production buildso que fazer?
d.popov
3
Eu acho que você precisa de um telefone enraizado para poder executar isso
Caner
Sim eu conheço. Mas, como você pode ver, atualmente não tenho reputação para comentar a postagem do autor, mas tive esse problema, então a única maneira era adicionar uma nova postagem ou abrir um tópico duplicado, então decidi adicionar uma postagem.
d.popov
1
o telefone estava com root, mas algo deu errado com o sistema operacional. Ele estava congelando depois de carregar a tela inicial na reinicialização. Enfim - nandroid piscando o telefone com a ROM de estoque resolveu o problema.
d.popov

Respostas:

130

De acordo com adb help:

adb root                     - restarts the adbd daemon with root permissions

O que de fato resolveu o problema para mim.

romano
fonte
2
Você também precisará habilitar o acesso root para adb, se ainda não o fez - veja a resposta de @Macarse.
Paul Whittaker de
Na verdade, o problema imediato é que o Android ainda não vem com um findcomando (dois anos após sua escrita) . Dito isso, sem o adb rodando como root, é verdade que você não será capaz de descer a partição / data com nenhum outro comando (embora você ainda possa acessar locais explícitos dentro dela).
Chris Stratton
1
Isso não é verdade. Você só precisa mudar para o usuário correto. Veja minha resposta abaixo: stackoverflow.com/a/38292436/342947
Fabian Zeindl
2
Sua resposta não é clara. Este comentário deve ser executado no dispositivo ou no computador?
Sauron
23
adbd cannot run as root in production buildsé o que você ganha quando corre adb root. Trata-se de uma instalação recente do MacOS com Android SDK atualizado. Não acho que essa resposta esteja correta, e já vi outras pessoas mencionarem esse problema. Por que tantos votos positivos?
Andrew Koster
40

Sem fazer root: Se você não consegue fazer root no seu telefone, use o run-as <package>comando para poder acessar os dados do seu aplicativo.

Exemplo:

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

exec-out executa o comando sem iniciar um shell e mutilar a saída.

Fabian Zeindl
fonte
9
Isso só funciona para aplicativos desenvolvidos para serem depuráveis ​​- ou seja, você pode usá-lo para aplicativos que está desenvolvendo, mas não deve funcionar para versões de produção do seu aplicativo ou de aplicativos de outra pessoa.
Chris Stratton
2
Isso retorna run-as: Could not set capabilities: Operation not permittedpara mim
Tom M
1
Ele funciona para o emulador API 29, e não se esqueça de colocar o .debugprefixo no final do pacote do aplicativo para aplicativos de depuração:
ultraon
19

O motivo da "permissão negada" é porque sua máquina Android não foi corretamente enraizada. Você viu $depois de começar adb shell? Se você fez o root corretamente em sua máquina, você teria visto #.

Se você vir $, tente entrar no modo Superusuário digitando su. Se o Root estiver habilitado, você verá o #- sem pedir a senha.

vento
fonte
2
Depois de fazer o root corretamente em sua máquina, você precisará habilitar o acesso de root ao adb e executar o adb no modo root antes que sua suetapa funcione - consulte as respostas de @Macarse e @Roman.
Paul Whittaker de
1
Não. O motivo da "permissão negada" é que não há findcomando.
Chris Stratton
@ChrisStratton Você salvou minha vida, eu também estava escrevendo o comando shell de dentro do shell adb
Divyanshu Kushwaha
1
Estou tentando ver arquivos no simulador Android. Eu digito 'su' depois de '$' e ele diz: su: não encontrado
Pete Alvin
5

Pode ser necessário ativar o adb root no menu de configurações do desenvolvedor. Se você executar a adb rootpartir da linha cmd, poderá obter:

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

Depois de ativar a opção root (apenas ADB ou Apps e ADB), o adb será reiniciado e você poderá usar o root a partir da linha cmd.

Macarse
fonte
3
Se você não conseguir ver o item 'Opções do desenvolvedor' no menu Configurações, consulte esta resposta para obter detalhes sobre como torná-lo visível. (Resumindo: Configurações> Sobre o telefone> Número da versão> Toque 7 vezes (!).)
Paul Whittaker
1
Mas uma vez dentro, não vejo nada aqui! O que deveria dizer?
JohnyTex
36
Esta opção não existe nas compilações de estoque do Android - se existe, estaria confinada à ROM de reposição de alguém.
Chris Stratton
Existe uma maneira de fazer isso sem uma GUI? Eu acho que há uma opção para ele /system/build.prop, mas não consigo encontrar.
Jeroen
Onde encontro o menu para procurar as configurações?
martinkunev
0

Cuidado com a barra, troque "\" por "/", assim: adb.exe push SuperSU-v2.79-20161205182033.apk / storage

jmojico
fonte
0

data partição não acessível para usuário não root, se você deseja acessá-la, você deve fazer root em seu telefone.

adb root não funciona para todos os produtos e depende do tipo de construção do telefone.

na nova versão do android studio, você pode explorar o /data/datacaminho para aplicativos depuráveis.

Golil
fonte
-4

Faça a remontagem do adb. E então tente adb shell

Pavankumar Vijapur
fonte
3
adb remountdá:remount failed: No such file or directory
Caner
2
Não. Isso não tem nada a ver com o problema.
Chris Stratton
-4

Execute seu cmdcomo administrador, isso resolverá meus problemas. Obrigado.

Kishan Oza
fonte
Não. A questão diz respeito a uma recusa do Android, não do Windows.
Chris Stratton