adb "Permissão negada" para executar um arquivo "./configure"

9

Eu preciso executar um configurearquivo no meu telefone Android, então acho que a melhor maneira de fazer isso é usar o adb shellcomando

Estou executando um emulador do Android em uma plataforma Windows-7 e lá estou executando o adb shellcomando em uma janela do DOS. Usando o cdcomando que eu estou mudando para o diretório onde o meu configurearquivo é, e então eu estou executando o seguinte comando: ./configure. Estou recebendo o seguinte erro:

./configure: permission denied

Então, eu tento executar o adb no modo raiz com adb root- mas aparentemente meu adb já está no modo raiz (além disso, eu tenho o caractere "#" antes de cada linha do meu shell do adb).

Também tentei usar, chmodmas não vejo nenhuma diferença antes e depois de executar este comando ( ls -la), então talvez o problema esteja aqui (como posso executar o chmodcomando?).

Talvez alguém aqui possa me ajudar com o meu problema e, se você também tiver uma explicação sobre o motivo pelo qual não tenho permissão para executar meu configurearquivo, será ótimo.

Obrigado.

PS: Meu objetivo aqui é usar o pacote net-snmp em uma plataforma Android, compilando as fontes deste projeto diretamente na plataforma.

grattmandu03
fonte
3
Provavelmente esse é o problema. /sdcardnormalmente é montado com o noexecsinalizador no Android, portanto você não pode executar binários a partir dele. Eu recomendaria tentar movê-lo para outro lugar (geralmente /data/localé usado para coisas assim). Veja se isso resolve o problema.
Eldarerathis
3
Além disso, copie-o para o /usr/local/tmpdiretório (o net-snmp-5.7.2diretório inteiro dentro /sdcard.)
Liam W
11
@ t0mm13b Não tenho certeza se isso está fora do tópico, pois pode ser útil para pessoas que precisam executar um arquivo em seu dispositivo, como uma exploração de raiz.
Liam W
11
Ok obrigado. Minha pergunta aqui foi mais sobre como executar um script sh com o shell adb do que uma questão de desenvolvimento. Mas agora tenho a solução: "/ sdcard está montado com o sinalizador noexec", portanto, se eldarerathis ou Liam W quiserem colocar seu comentário em uma resposta real, eu o validarei. Ou talvez você possa me explicar como posso fechar minha pergunta?
grattmandu03
11
@ grattmandu03 Eu já tenho;) #
Liam W

Respostas:

10

Isto é devido a 2 coisas:

  1. O arquivo não tem permissões de execução [AND]
  2. O arquivo não pode obter permissões executáveis, pois está no cartão SD. O sistema de arquivos do cartão SD pode aceitar permissões de arquivo, no entanto, é montado com o noexecsinalizador, conforme declarado em um comentário. Isso interrompe a execução dos arquivos.

Solução:

  1. Copie o net-snmp-5.7.2diretório para o /data/local/tmpdiretório como raiz.
  2. Defina o configurearquivo para ser executável executando chmod 0777 /data/local/tmp/net-snmp-5.7.2/configurecomo root.
  3. Agora você deve conseguir executar o script de configuração digitando /data/local/tmp/net-snmp-5.7.2/configuree pressionando enter.

Nota

Tudo isso deve ser feito como usuário root :)

Liam W
fonte
8

Conforme explicado pelos comentários e pela resposta de Liam , isso se deve ao noexecsinalizador usado pelo sistema ao montar o sdcard. Se o seu configurearquivo é um script de shell (como geralmente é), você ainda pode enganá-lo para que seja executado:

cdpara o diretório conforme descrito acima e, em seguida, execute sh configure.

shé o intérprete do Shell e esse binário deve estar localizado /system/bin, onde os arquivos são executáveis. Passando seu script como o primeiro argumento, isso abrirá um novo processo de shell que executa seu configurescript.

Izzy
fonte
Obrigado pela sua resposta. O sh configurefaz o truque.
grattmandu03
11
Obrigado pela confirmação! E feliz por poder ajudar. Eu uso este truque em máquinas Linux / Unix de vez em quando :)
Izzy