Операция оболочки adb не разрешена для каждой команды

Недавно я сделал сброс до заводских настроек на своем телефоне Android. До сброса у меня получалось устанавливать приложения через adb install. Телефон не был рутирован.

После сброса настроек я в основном получаю «Операция не разрешена» почти для каждой команды в оболочке adb (включая несуществующие):

$ install
install: permission denied
$ push
push: permission denied
$ remount
remount: permission denied
$ su
su: permission denied
$ kmmsaldfmaldskfmlasdf
kmmsaldfmaldskfmlasdf: permission denied
$

Большая часть PATH для меня нечитаема (кроме /system/bin и /system/xbin):

$ echo $PATH
/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
$ ls /sbin
opendir failed, Permission denied
$ ls /vendor/bin
/vendor/bin: No such file or directory
$ ls /system/sbin/
/system/sbin/: No such file or directory

Если я запускаю adb root:

$ adb root
adbd cannot run as root in production builds

Из моего поиска (который уже отнял у меня больше времени, чем необходимо), некоторые указатели указывают на default.prop:

$ cat default.prop
#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.secure=1
ro.allow.mock.location=0
ro.debuggable=0
persist.service.adb.enable=1
$

Но у меня нет прав на запись в default.prop:

$ ls -l default.prop 
-rw-r--r-- root     root          118 1969-12-31 19:00 default.prop
$

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

Пытаюсь перемонтировать как rw:

$ mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
/dev/stl9 /system rfs ro,relatime,vfat,log_off,check=no,gid/uid/rwx,iocharset=cp437 0 0
/dev/stl10 /cache rfs rw,nosuid,nodev,relatime,vfat,llw,gid/uid/rwx,iocharset=cp437 0 0
/dev/stl6 /mnt/.lfs j4fs rw,relatime 0 0
/dev/stl11 /data rfs rw,nosuid,nodev,relatime,vfat,llw,check=no,gid/uid/rwx,iocharset=cp437 0 0
$ mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /
mount: Operation not permitted

Мой телефон — Samsung Galaxy Y, что может иметь значение


person ealfonso    schedule 01.10.2013    source источник
comment
Какая версия Android у вас установлена?   -  person Ted Hopp    schedule 01.10.2013
comment
Он сообщает 2.3.6 как версию Android. Я пытался обновить, он не находит доступных обновлений.   -  person ealfonso    schedule 01.10.2013
comment
Вместо того, чтобы вводить такие команды, как install, из оболочки, что произойдет, если вы введете их из командной строки ПК: adb install и т. д.? Сначала попробуйте adb remount из командной строки ПК. Вам также может потребоваться переустановить драйвер телефона (согласно этой теме).   -  person Ted Hopp    schedule 01.10.2013
comment
В порядке. На самом деле, это работает. (Пожалуйста, опубликуйте это как свой ответ, чтобы я мог в конечном итоге принять его). Наверное, я никогда не думал, что это может иметь значение. Интуитивно не должно. . Мне даже не пришлось adb remount. Проблема все еще остается, почему я не могу использовать оболочку?   -  person ealfonso    schedule 01.10.2013
comment
adb remount терпит неудачу с Operation not permitted   -  person ealfonso    schedule 01.10.2013


Ответы (8)


Вам нужно ввести команды типа install из командной строки ПК:

C:\> adb install ...

а не из оболочки adb. Если это не сработает, вам может потребоваться запустить

adb remount

и/или перезагрузите телефон и/или переустановите драйвер телефона. Дополнительную информацию см. в этой теме.

Я обнаружил, что путь в сеансе оболочки adb может содержать всевозможные несуществующие каталоги. Я не знаю, почему это так, но обычно это ничего не портит.

person Ted Hopp    schedule 01.10.2013
comment
Я все еще не могу использовать оболочку. Интересно, что теперь я получаю install: permission denied вместо install: Operation not permitted. Поскольку мой вопрос касался не только установки, но и возможности использования команд в оболочке adb, я хотел бы найти решение этой проблемы, прежде чем принять ваш ответ. Ваш совет был полезен для запуска команды install, но я чувствую, что все еще не могу использовать adb так, как это должен делать разработчик. - person ealfonso; 01.10.2013
comment
@ealfonso - не уверен, что это поможет, но попробуйте включить отладку по USB (думаю, в 2.3.6 это в разделе «Настройки» › «Приложения» › «Разработка»). Также включите Неизвестные источники. - person Ted Hopp; 01.10.2013
comment
Отладка по USB включена, это одна из первых вещей, которые я проверил. Я также включил Android Device Manager в качестве администратора устройства. Но я все еще получаю это разочаровывающее поведение. - person ealfonso; 01.10.2013
comment
@ealfonso - это довольно странно. В данный момент у меня нет идей, но я буду продолжать думать об этом. (О ... вы пытались убить и перезапустить сервер adb? Я бы не ожидал, что это повлияет на поведение, которое вы описываете, но вы никогда не знаете.) - person Ted Hopp; 01.10.2013
comment
Да, я обычно перезапускал демон adb при каждом изменении, я также перезапускал телефон. Единственное изменение — теперь Operation not permitted заменено на permission denied для всех команд (включая несуществующие). У меня есть ощущение, что это проблема, преднамеренно поставленная производителями этого конкретного телефона. - person ealfonso; 01.10.2013
comment
@ealfonso - Если бы это было так, то команды не работали бы до сброса настроек. (У меня сложилось впечатление, что дело обстоит именно так: сначала проблемы появились при сбросе, но до этого все работало. Если это не так, уточните.) - person Ted Hopp; 01.10.2013
comment
Ну, я уверен, что я установил приложение через adb. Но теперь я не уверен, использовал ли я метод adb install some.apk или adb shell -> instal some.apk. Я помню, что не мог su, но для этого, вероятно, требуется рутирование телефона. - person ealfonso; 01.10.2013

Предполагая, что вы не установили новую версию Android на свой телефон, я предполагаю, что ваш телефон больше не находится в режиме разработчика.

Перейдите в настройки. Прокрутите вниз, пока не увидите заголовок «Система». Под ним вы должны увидеть несколько вариантов. Если разработчик не входит в их число, нажмите «О телефоне», затем прокрутите вниз до «Номер сборки». Нажмите на номер сборки 7 раз. Это должно вернуть режим разработчика.

person Joe Malin    schedule 01.10.2013
comment
В порядке. Я продолжаю нажимать на Build number, ничего не происходит. Я нажал 7 раз, но все еще получаю проблемы с разрешением, описанные выше. - person ealfonso; 01.10.2013

Попробуйте выполнить эти команды в режиме восстановления, самые последние восстановления — это debuggable=1, кроме тех, которые декомпилируют ядро ​​и изменяют ro.debuggable=0 на 1, что позволит вам перемонтировать с помощью adb и разрешить adb работать от имени пользователя root!

person Ricky Divjakovski    schedule 15.10.2013
comment
Я посмотрю на это, хотя было бы неплохо пару ссылок, чтобы уточнить ваш ответ. - person ealfonso; 16.10.2013

Я мог бы найти решение для вас

Недавно я обновил свой (рутированный) LGP500 с Froyo (Android 2.2.1) на Gingerbeard (Android 2.3.3). После этого я оказался в ситуации, очень похожей на вашу (такую ​​же, если честно). Я потерял свои учетные данные SU и отчаянно пытался найти решение этой проблемы. Я был в таком отчаянии - я даже попробовал известный метод Android 4.2 включение настроек разработчика, какое-то время тыкание по моему бедному устройству как сумасшедшему. Итак ... у меня была точно такая же проблема. Во время серфинга в Интернете я обнаружил, что проблема была на самом деле в сборке Gingerbeard, и наткнулся на несколько интересных решений. И, после всех усилий — мне потребовалось довольно много времени, чтобы выяснить, какой способ лучше — я (наконец-то) рутировал свое устройство 2.3.3.

Обратите внимание, что я делюсь этими вещами только в образовательных целях. Не обижайтесь, если вы случайно заблокируете свое устройство.


Прежде чем продолжить, проверьте следующее:

  • Вы правильно установили драйверы ADB (если нет - будет отображаться ошибка со следующим текстом: «не удалось найти онлайн-устройство, включите отладку по USB!»; решение - установите или переустановите драйверы ADB. Имейте в виду, что вы должны установить драйверы с вашим устройство подключено, НО "Отладка по USB" отключена.
  • У вас установлены флажки «Отладка по USB» и «Разрешить фиктивные местоположения».

    Настоятельно рекомендуется иметь резервную копию, чтобы предотвратить потерю данных. (По крайней мере, экспортируйте свои контакты в файл .vcf)

Если все в порядке:

  1. Установите UnlockRoot (вы можете найти Unlock_Root_2.3.0.exe здесь) и запустите его.
  2. Запустите «root» (на самом деле вы можете игнорировать все, кроме кнопки «root»). Выберите свое устройство во всплывающем меню.
  3. Перезагрузите устройство (чтобы завершить установку бинарного файла SU — приложение предложит вам перезагрузиться, но вы можете сделать это самостоятельно через adb shell). И вуаля! ваше устройство готово. укоренился, просто так.
person faustvault    schedule 14.01.2014

Вам следует установить приложение SuperSU из Google Play. . Это единственное приложение с правами суперпользователя, которое правильно активировало функции root на моем устройстве (Galaxy S4).

После этого выполните adb shell и su. Если вы хотите извлечь файл из каталога /data, вам нужно будет изменить права доступа к этому файлу (используя chmod). Тогда это должно работать!

person IgorGanapolsky    schedule 18.02.2014

Ваши пользовательские возможности где-то урезаны. Посмотрите на статус /proc//, чтобы увидеть маску возможностей.

person skoperst    schedule 14.10.2015

У меня была эта проблема бесконечно на моей галактике S3. Когда я построил свою кухню для Android, я нашел способ обойти это.

  1. Укореняйте устройство, если вам нужны расширенные разрешения
  2. Распаковать сборку ядра для вашего устройства, в default.prop поменять эти значения на соответствующие

ro.secure=0 ro.debuggable=1

  1. Скомпилировать/перепаковать и прошить
  2. Включить отладку по USB
person Ricky Divjakovski    schedule 01.04.2016

Можно попробовать SUInstaller.

http://theroot.ninja/apks/SUInstaller.apk

В основном настраивает su на вашем телефоне. Это МОЖЕТ работать, по памяти я использовал один клик androroot для рутирования samsung y. Если это не помогло, попробуйте загрузиться в рекавери и прошить supersu, можете попробовать метод Samsung Galaxy или использовать его, http://www.android.gs/root-samsung-galaxy-s3-with-cwm-recovery-and-supersu/

Удачи.

person d4rkstorm    schedule 09.01.2015