adb «Отказано в доступе» для запуска файла «./configure»

Мне нужно запустить configureфайл на моем телефоне Android, поэтому я думаю, что лучший способ сделать это — использовать adb shellкоманду.

Я запускаю эмулятор Android на платформе Windows-7 и запускаю adb shellкоманду в окне DOS. Используя cdкоманду, я перехожу в каталог, где находится мой configureфайл, а затем выполняю следующую команду: ./configure. Я получаю следующую ошибку:

./configure: permission denied

Итак, я пытаюсь запустить adb в корневом режиме с помощью adb root-- но, видимо, мой adb уже находится в корневом режиме (более того, у меня есть символ «#» перед каждой строкой моей оболочки adb).

Я также пытался использовать chmod, но не вижу никакой разницы до и после выполнения этой команды ( ls -la), так что, возможно, проблема здесь (как я могу запустить chmodкоманду?).

Может быть, кто-то здесь может помочь мне с моей проблемой, и если у вас также есть объяснение, почему у меня нет разрешения на запуск моего configureфайла, это будет здорово.

Спасибо.

PS: Моя цель здесь — использовать пакет net-snmp на платформе Android, скомпилировав исходный код этого проекта непосредственно на платформе.

Где в файловой системе эмулятора Android находится файл конфигурации? т.е. какой путь к файлу?
Путь к файлу: /sdcard/net-snmp-5.7.2/configure.
chmod 0777 ./configureпопробуйте это, затем попробуйте выполнить.
Это, вероятно, проблема. /sdcardобычно монтируется с noexecфлагом в Android, поэтому вы не можете выполнять из него двоичные файлы. Я бы порекомендовал попытаться переместить его в другое место (часто /data/localиспользуется для подобных вещей). Посмотрите, решит ли это проблему.
Также скопируйте его в /usr/local/tmpкаталог (весь net-snmp-5.7.2каталог в формате /sdcard.
Спасибо за ваш комментарий, но он не работает. До chmod 0777: "----rwxr-x [...] настроить" и после chmod 0777: "----rwxr-x [...] настроить". Вот почему я говорю, что, возможно, моя проблема связана с командой «chmod».
@ grattmandu03 Это потому, что он на SD-карте - SD-карты не поддерживают права доступа к файлам :)
Хорошо, верно. Итак, я попытался скопировать каталог net-snmp в /data/local/tmp, а затем напрямую попытался запустить файл конфигурации, но получил отказ в разрешении. Поэтому я использую команду «chmod 0777». И теперь у меня есть что-то странное, когда я снова запускаю свой файл конфигурации, я получаю «файл не найден», но я все еще вижу этот файл в каталоге /data/local/tmp. Что я делаю не так??
какое содержание configureскрипта? Он ищет файл для выполнения... Вы уверены, что знаете, что делаете? Для чего configure? Эти детали отсутствуют в вопросе! :)
Файл «configure» — это сценарий настройки, предоставляемый исходным пакетом net-snmp. Я пытаюсь перенести пакет net-snmp на телефон Android. На данный момент я использую сценарий busybox для запуска сценария настройки, и, похоже, он работает (у меня есть только некоторые ошибки из-за того, что система Linux не похожа на систему Android, но это то, что я ищу). Спасибо вам всем.
Создайте его на Linux, а не на Android .... вы должны были указать это с самого начала! :)
Да, я сделал это, но я думаю, что архитектура между системой Linux и телефоном Android отличается, поэтому я не могу использовать результат Linux непосредственно в моем телефоне Android. Кстати, я знаю, что есть несколько java-библиотек для использования net-snmp, но мой босс хочет, чтобы исходный код net-snmp был скомпилирован на платформу Android.
кросс-компиляция ключевых слов в Linux с поддержкой чипсета ARM...
В его нынешнем виде это скорее вопрос развития! Голосование за закрытие, так как это не по теме.
@ t0mm13b Не совсем уверен, что это не по теме, так как это может быть полезно для людей, которым нужно выполнить файл на своем устройстве, например, использовать root-эксплойт.
@LiamW ясно, что OP пытался построить поверх Android, запустив configureскрипт, связанный с разработкой, и применив неправильный подход!
Хорошо спасибо. Мой вопрос здесь был больше о том, как я могу запустить скрипт sh с оболочкой adb, чем о разработке. Но теперь у меня есть решение: «/sdcard монтируется с флагом noexec», поэтому, если eldarerathis или Liam W хотят поместить свой комментарий в реальный ответ, я подтвержу его. Или, может быть, вы можете объяснить мне, как я могу закрыть свой вопрос?
@ grattmandu03 У меня уже есть ;)

Ответы (2)

Это связано с 2 вещами:

  1. У файла нет прав на выполнение [И]
  2. Файл не может получить права на выполнение, так как он находится на SD-карте. Файловая система SD-карты может принимать права доступа к файлам, однако она монтируется с noexecфлагом, как указано в комментарии. Это останавливает выполнение файлов.

Решение:

  1. Скопируйте net-snmp-5.7.2каталог в /data/local/tmpкаталог как root.
  2. Сделайте configureфайл исполняемым, запустив его от имени пользователя chmod 0777 /data/local/tmp/net-snmp-5.7.2/configureroot.
  3. Теперь вы сможете запустить скрипт configure, набрав /data/local/tmp/net-snmp-5.7.2/configureи нажав Enter.

Примечание

Все это должно быть сделано как пользователь root :)

Я получаю: /system/bin/sh: /data/local.../filename: Нет такого файла или каталога.

Как поясняется комментариями и ответом Лиама , это связано с noexecфлагом, используемым системой при монтировании SD-карты. Если ваш configureфайл представляет собой сценарий оболочки (как это обычно и бывает), вы все равно можете обмануть его выполнение:

cdв каталог, как вы описали выше, а затем выполните sh configure.

shявляется интерпретатором оболочки, и этот двоичный файл должен находиться в /system/binпапке , где файлы являются исполняемыми. Передав ваш скрипт в качестве первого аргумента, вы откроете новый процесс оболочки, который выполняет ваш configureскрипт.

Спасибо за Ваш ответ. Это sh configureделает свое дело.
Спасибо за подтверждение! И рад, что смог помочь. Я время от времени использую этот трюк на машинах Linux/Unix :)