A partição / system é montada com a opção "nosuid", impedindo que aplicativos Android executem programas setuid. Você pode desmontar e montar novamente com a opção suid:
adb shell mount -o rw,remount /system
Estou tentando obter acesso root ao meu tablet x86 chinês. Com adb eu tenho raiz. Copiei um binário "sh" e defini o bit setuid e, a partir do adb, ele funciona como esperado:
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
#
No entanto, quando o mesmo binário é invocado via tablet (no emulador de terminal) ele não mantém privilégios de root (o bit setuid parece ignorado). Apenas a concha normal.
O que está impedindo que o bit setuid funcione? Não há sinalizadores de montagem "nosuid" e tentei desativar o selinux com "setenforce permissive".
A partição / system é montada com a opção "nosuid", impedindo que aplicativos Android executem programas setuid. Você pode desmontar e montar novamente com a opção suid:
adb shell mount -o rw,remount /system
A partição / system é agora montada nosuid para processos gerados por zigotos, impedindo que aplicativos Android executem programas setuid.