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

9

Мне нужно запустить 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, скомпилировав исходники этого проекта непосредственно на платформу.

grattmandu03
источник
3
Это, наверное, проблема. /sdcardобычно монтируется с noexecфлагом в Android, поэтому вы не можете запускать из него двоичные файлы. Я бы порекомендовал попробовать переместить его в другое место (часто /data/localиспользуется для подобных вещей). Посмотрим, решит ли это проблему.
Эльдераратэ это
3
Кроме того, скопируйте его в /usr/local/tmpкаталог (весь net-snmp-5.7.2каталог в /sdcard.
Лиам W
1
@ t0mm13b Не совсем уверен , если это является тема, как это может быть полезно для людей , которые должны выполнить файл на устройстве, такие как корень эксплуатировать.
Лиам W
1
Хорошо, спасибо. Мой вопрос был больше о том, как я могу запустить скрипт sh с оболочкой adb, чем вопрос разработки. Но теперь у меня есть решение: «/ sdcard смонтирован с флагом noexec», поэтому, если eldarerathis или Liam W захотят поместить свой комментарий в реальный ответ, я проверю его. Или, может быть, вы можете объяснить мне, как я могу закрыть свой вопрос?
grattmandu03
1
@ grattmandu03 У меня уже есть;)
Лиам W

Ответы:

10

Это связано с 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/configureот имени пользователя root.
  3. Теперь вы сможете выполнить скрипт configure, набрав /data/local/tmp/net-snmp-5.7.2/configureи нажав Enter.

Запись

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

Лиам W
источник
8

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

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

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

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