Android / linux 忽略 setuid 标志

Android / linux 忽略 setuid 标志

我正在尝试获取我的中国 x86 平板电脑的 root 访问权限。使用 adb,我拥有 root 权限。我复制了一个“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 位似乎被忽略)。只是普通的 shell。

是什么阻止了 setuid 位工作?没有“nosuid”挂载标志,我尝试使用“setenforce permissive”禁用 selinux。

答案1

/system 分区使用“nosuid”选项挂载,阻止 Android 应用程序执行 setuid 程序。您可以暂时卸载并使用 suid 选项重新挂载:

adb shell mount -o rw,remount /system

答案2

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

/system 分区现在为 zygote 生成的进程安装了 nosuid,从而阻止 Android 应用程序执行 setuid 程序。

相关内容