Android / Linux игнорирует флаг setuid
Я пытаюсь получить root-доступ к своему китайскому планшету x86. С адб у меня есть рут. Я скопировал двоичный файл "sh" и установил бит setuid, и из adb он работает как положено:
1|shell@x98air3g_c5j8:/ $ which su.sh
/system/xbin/su.sh
shell@x98air3g_c5j8:/ $ ls -al /system/xbin/su.sh
-rwsr-sr-x root shell 395004 2016-01-02 17:39 su.sh
shell@x98air3g_c5j8:/ $ mount | grep system
/dev/block/by-name/system /system ext4 ro,seclabel,noatime,data=ordered 0 0
shell@x98air3g_c5j8:/ $ su.sh
#
Однако, когда тот же двоичный файл вызывается через сам планшет (в эмуляторе терминала), он не сохраняет привилегии root (бит setuid, похоже, игнорируется). Просто нормальная оболочка.
Что мешает биту setuid работать? Нет флагов монтирования "nosuid", и я попытался отключить selinux с помощью "setenforce permissive".
2 ответа
Раздел / system монтируется с опцией "nosuid", что не позволяет приложениям Android запускать программы setuid. Вы можете временно размонтировать и снова смонтировать с опцией suid:
adb shell mount -o rw,remount /system
http://www.androidauthority.com/android-4-3-new-security-features-253244/
Раздел /system теперь монтируется nosuid для процессов, порожденных зиготами, что не позволяет приложениям Android выполнять программы setuid.