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?


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.


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.


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.


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.


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


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.



-4

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


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.