nosuid 对挂载文件系统内的可执行文件的影响

Mel*_*lab 3 linux setuid mount

让我知道我几乎不明白 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.
Run Code Online (Sandbox Code Playgroud)

对我来说,Linux 中的文件系统是“为”任何东西挂载是没有意义的,就好像它的挂载方式可以与进程或可执行文件相关。如果 Android 设备上的系统分区挂载了nosuid,那么系统的任何核心可执行文件如何以 root 身份运行,它们需要在启动的最早阶段进行?

Wil*_*ard 6

可能在同一文档中较早的相关行:

没有 setuid/setgid 程序。为 Android 系统文件添加了对文件系统功能的支持,并删除了所有 setuid/setguid 程序。这减少了根攻击面和潜在安全漏洞的可能性。

关于你的最后一个问题:

如果 Android 设备上的系统分区挂载了 nosuid,那么系统的任何核心可执行文件如何以 root 身份运行,它们需要在启动的最早阶段进行?

nosuid不会阻止root运行进程。它是一样的noexec。它只是阻止了suid可执行文件上的位生效,根据定义,这意味着用户无法运行有权执行用户自己无权执行的操作的应用程序。

这里也相关的是对“合子”实际上是什么的理解;尝试阅读https://android.stackexchange.com/a/77308

免责声明:我不是 Android 专家。

  • 是的,类似。`sudo` 本身设置了它的 `suid` 位,你可以通过运行 `ls -l $(which sudo)` 看到。另一个常见的 `suid` 实用程序是 `passwd`;它必须以“root”权限运行才能编辑“/etc/passwd”。请注意,`suid` 实际上并不意味着“以 `root` 权限运行”;它的意思是“以可执行文件所有者的权限运行,而不是运行可执行文件的用户的权限”。但是,您看到的最常见的 `suid` 可执行文件由 `root` 拥有。 (3认同)
  • 要在你自己的机器上使用 `suid` 设置,你可以运行 `cp /bin/ls /tmp/ ;须藤 chown someuser /tmp/ls ; 须藤 chmod 4755 /tmp/ls ; /tmp/ls ~someuser` 你将能够列出 `someuser` 主目录的内容,因为 `ls` 二进制文件的修改副本以 `someuser` 的权限运行,而不是你的权限(没有 `需要 sudo`)。而且,如果你尝试`/tmp/ls ~`,你会得到“权限被拒绝”,因为`someuser` *没有*列出*你的*主目录的权限。 (3认同)