Я могу получить приглашение 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?