Терминал «Отказано в доступе» — нужна дополнительная информация о сообщении об ошибке

Я пытаюсь запустить исполняемый файл с терминала Android с правами root, но постоянно получаю следующую ошибку:

[ExecutableName] : permission denied

Подтверждено, что я вошел в систему как root. Я вижу знак # перед приглашением и могу запускать корневые команды, такие как chmod. Я видел, что в руководстве по оболочке Android говорится

«Встроенная оболочка имеет очень ограниченную обработку ошибок. Если вы наберете имя команды >неправильно, будет написано «Отказано в доступе», хотя реальная проблема заключается в том, что >не удалось найти команду:"

Кто-нибудь знает, как получить больше информации об этой ошибке «отказано в доступе»?

Можете ли вы запустить ls -lиз каталога, в котором находится исполняемый файл, и опубликовать его?
Вот что я запустил, мне просто очень нужно больше информации о том, что происходит, когда я его запускаю.---xrwxr-x 1 system sdcard_r 76 Oct 3 2007 doukutsu
Хм, sdcard_rэто интересно. Бинарный файл находится на вашей SD-карте? Я знаю, что некоторые устройства (но, возможно, не все) просто не позволят вам запустить исполняемый файл, если он находится на внешнем хранилище. Вы можете попробовать переместить его /data/localили что-то подобное и посмотреть, поможет ли это. Я не знаю, есть ли способ просто получить больше информации из оболочки о том, почему вы получаете permission denied.
У вас установлен SuperUser? Что говорит журнал?
@MatthewRead говорит, что «эмулятор терминала разрешен»
@eldarerathis Это приводит меня к некоторым другим сообщениям об ошибках, по крайней мере, которые я считаю многообещающими. Теперь я получаю ./dokutsu не найден или не работает связанная с ним корзина, ./doukutsu.bin: 1 Синтаксическая ошибка: неожиданное слово (ожидание ")"). Я думаю, что в этом файле могут быть некоторые ошибки, но я думаю, что для целей этого поста я избавился от ошибки, спасибо.
Я получил ожидаемое xxx: not foundкак в обычной, так и в корневой оболочке на моем Samsung Spica; какая у тебя модель телефона?

Ответы (1)

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

Опять же, одно решение уже было упомянуто eldarerathis: попробуйте другое хранилище. У вас есть питание, ваше устройство рутировано.

Второй подход - перемонтировать SD-карту без noexecопции. Но есть веская причина, почему noexecздесь используется; это, по крайней мере, предлагает дополнительный уровень безопасности. Поэтому, прежде чем использовать этот подход, вам следует немного изучить, не вызовет ли он нежелательных побочных эффектов.

+1 от меня - это единственная причина, по которой на SD-картах исполняемый бит заблокирован на уровне файловой системы, чтобы вредоносные приложения не сеяли хаос из другого места за пределами ПЗУ, то есть с SD-карты!