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.

Другие вопросы по тегам