Я могу получить приглашение root в терминале, запустив один из описанных в другом месте эксплойтов. (например, здесь: http://wiki.cyanogenmod.com/wiki/Motorola_Droid_2_Global:_Full_Update_Guide )
На этом этапе я могу установить двоичный файл «su» и дать ему разрешения 4755. Это должно позволить любому исполнить его, а поскольку владельцем двоичного файла является «root», а бит закрепления установлен, я должен стать пользователем root. Но у меня, видимо, нет способа не стать рутом с терминала, за исключением перезагрузки. Но после перезагрузки я не могу получить права root с помощью su.
$ ls -l /system/bin/su
-rwsr-xr-x root app_101 26234 2012-07-09 15:00 su
Хорошо, разрешения выглядят нормально, если я должен иметь возможность запустить его, чтобы стать пользователем root, но только в этом конкретном вызове терминала.
$ /system/bin/su
Permission denied
Это также терпит неудачу, если я указываю команду для запуска от имени пользователя root или с любыми другими аргументами:
$ /system/bin/su /system/bin/sh
Permission denied
Почему? Есть ли какой-то другой механизм на работе? Я не хочу устанавливать Superuser.apk, потому что я просто хочу, чтобы я мог временно получить корневую оболочку, если необходимо, например, удалить ненужные файлы вручную. Кроме того, Superuser.apk в любом случае полагается на двоичный файл su, поэтому у него должен быть какой-то способ его вызова, так почему я не могу воспроизвести его в терминале?
Изменить: у меня была другая мысль, поэтому я попытался скопировать / bin / sh в другое расположение и сделал его suid root. Но хотя я могу выполнить новый бинарный файл, он не дает мне root. Android делает что-то хитрое / другое с suid, чего не делает обычный Linux?
источник
Ответы:
Подсказка в идентификаторе владельца / группы ...
Обратите внимание, что для идентификатора группы установлено значение «app_101», которое должно быть «root», но, опять же, вам нужен
busybox
двоичный файл (который является частью двоичного файла SuperUser.apk, при установке он копирует соответствующий упомянутый двоичный файл/system/xbin
в порядок) чтобы быть в состоянии кchown
этому.источник
Попробуйте добавить
-c
опцию. напримерили
(для большего количества аргументов)
источник
Немного больше копания, и я думаю, что нашел ответ. Причина, по которой он не работает, заключается в том, что приложение Terminal не запрашивает разрешения суперпользователя в своем манифесте, например:
Этот дополнительный уровень безопасности, по-видимому, связан с тем, что терминальное приложение является Java-приложением, хотя оно хорошо скрывает его. Суперпользователь, кажется, каким-то образом подбрасывает вещи, так что Java-приложения могут получить это разрешение, даже если они не знали, что оно им было нужно при создании.
источник
ACCESS_SUPERUSER
разрешение не связано с вашей проблемой