Android / Linux ignoriert das Setuid-Flag

2285
Miha

Ich versuche, root auf mein chinesisches x86-Tablet zuzugreifen. Mit Adb habe ich root. Ich habe ein "sh" -binäres kopiert und setuid gesetzt, und von adb aus funktioniert es wie erwartet:

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 #  

Wenn dasselbe Binärprogramm jedoch über das Tablet selbst (im Terminalemulator) aufgerufen wird, behält es keine Root-Rechte bei (Setuid-Bit scheint ignoriert zu werden). Nur die normale Schale.

Was verhindert, dass setuid bit funktioniert? Es gibt keine "nosuid" -Mount-Flags, und ich habe versucht, Selinux mit "setenforce permissive" zu deaktivieren.

3
JA, und das ist gut so! Rolf vor 6 Jahren 0

2 Antworten auf die Frage

2
Johan Van Barel

Die Systempartition ist mit der Option "nosuid" gemountet, sodass Android-Anwendungen keine Setuid-Programme ausführen können. Sie können mit der suid-Option die temporäre Bereitstellung aufheben und erneut bereitstellen:

adb shell mount -o rw,remount /system 
0
osexp2003

http://www.androidauthority.com/android-4-3-new-security-features-253244/

Die Systempartition / ist jetzt in nosuid für von Zygote erzeugte Prozesse gemountet, sodass Android-Anwendungen keine Setuid-Programme ausführen können.