1

因此,如果我在我的 mac 上创建了一个程序 suid root,并且该程序在 /bin/sh 上运行 exec,则 shell 不是 root,而如果我在 Linux 上执行相同的操作,则 shell 是 root。Mac 不会像 Linux 那样传播权限吗?还是 suid 位有什么不同?我的理解是具有 suid root 的程序以 root 权限运行。并且由于调用 /bin/sh 的根 shell 将创建另一个根 shell,所以在 /bin/sh 上调用 exec 的 suid 根程序不应该创建一个根 shell 吗?

4

1 回答 1

0

所有进程都有多个 UID(至少是真实的、有效的和保存的 UID)。执行 setuid 二进制文件只会影响有效和保存的 UID,而不是“真实的”UID——因此,setuid 二进制文件将“知道”它是从哪个 UID 执行的,并且可以返回该 UID。在这种情况下,bash 实现在执行时会/bin/sh自动返回其真实 UID。

于 2011-09-11T03:57:46.057 回答