让大家知道,我几乎不明白 setuid/setgid/whatever 是什么。我思考它与程序执行的用户身份有关。这让我想到nosuid
。
在Android 4.3 中的安全增强,谷歌说
The /system partition is now mounted nosuid for zygote-spawned processes,
preventing Android applications from executing setuid programs.
对我来说,说 Linux 中的文件系统“为”任何东西挂载是没有意义的,就好像它的挂载方式可以与进程或可执行文件相关一样。如果Android设备上的系统分区是用 挂载的nosuid
,那么系统的任何核心可执行文件如何以root身份运行,而它们需要在启动的最早阶段执行此操作?
答案1
同一文档中较早的可能相关行:
没有 setuid/setgid 程序。向 Android 系统文件添加了对文件系统功能的支持,并删除了所有 setuid/setguid 程序。这减少了根攻击面和潜在安全漏洞的可能性。
关于你的最后一个问题:
如果Android设备上的系统分区是用nosuid挂载的,那么系统的任何核心可执行文件如何以root身份运行,而它们需要在启动的最早阶段执行此操作?
nosuid
并不能阻止root
来自正在运行的进程。这是不是与 相同noexec
。它只是阻止suid
可执行文件上的位生效,根据定义,这意味着用户无法运行有权执行用户无权执行的操作的应用程序。
这里还相关的是对“受精卵”实际上是什么的理解;尝试阅读https://android.stackexchange.com/a/77308
免责声明:我不是 Android 专家。