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, компілюючи джерела цього проекту безпосередньо на платформу.


3
В цьому, мабуть, проблема. /sdcardяк правило, встановлений з noexecпрапором в Android, тому ви не можете виконувати з нього двійкові файли. Я рекомендую спробувати перенести його кудись інше (часто /data/localвикористовується для таких речей). Подивіться, чи це вирішує проблему.
eldarerathis

3
Також скопіюйте його в /usr/local/tmpкаталог (весь net-snmp-5.7.2каталог в /sdcard.
Liam W

1
@ T0mm13b Не зовсім впевнений , якщо це є тема, як це може бути корисно для людей , які повинні виконати файл на пристрої, такі як корінь експлуатувати.
Liam W

1
Добре, дякую. Моє запитання тут було більше про те, як я можу запустити скрипт sh з оболонкою adb, ніж питання про розробку. Але тепер у мене є рішення: "/ sdcard монтується з прапором noexec", тому, якщо eldarerathis або Liam W хочуть поставити їх коментар у справжню відповідь, я його підтверджую. А може, ви можете мені пояснити, як я можу закрити своє питання?
grattmandu03

1
@ grattmandu03 У мене вже є;)
Liam W

Відповіді:


10

Це пояснюється двома речами:

  1. У файлі немає дозволів на виконання [AND]
  2. Файл не може отримати виконавчі права, як це є на SD-картці. Файлова система SD Card може приймати права доступу до файлів, однак вона встановлена ​​з noexecпрапором, як зазначено в коментарі. Це зупиняє виконання файлів.

Рішення:

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

Примітка

Це все слід робити як користувач root :)


8

Як пояснено в коментарях та відповіді Ліама , це пов’язано з noexecпрапором, який використовує система при монтажі sdcard. Якщо ваш configureфайл - це сценарій оболонки (як це зазвичай є), ви все одно можете обманути його для виконання:

cdдо каталогу, як ви описали вище, а потім виконайте sh configure.

shінтерпретатор Shell, і що бінарна повинні бути розташовані в /system/bin, де файли є виконуваними. Передавши сценарій в якості першого аргументу, це відкриє новий процес оболонки, який виконує ваш configureсценарій.


Дякую за вашу відповідь. Це sh configureробить трюк.
grattmandu03

1
Дякуємо за підтвердження! І радий, що зміг допомогти. Я використовую цей трюк на машинах Linux / Unix час від часу :)
Izzy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.