所以如果我在我的mac上创建一个程序suid root,并且该程序在/ bin / sh上运行exec,那么shell不是root,而如果我在Linux上做同样的事情,那么shell就是root。 Mac不像Linux那样传播权限吗?或者是不是有一些与suid位不同的东西?我的理解是具有suid root的程序以root权限运行。因为调用/ bin / sh的root shell会创建另一个root shell,所以不应该在/ bin / sh上调用exec的suid root程序创建root shell吗?
答案 0 :(得分:0)
所有进程都有多个UID(真实,有效和保存的UID至少)。执行setuid二进制文件只会影响有效和保存的UID,而不会影响“真正的”UID - 因此,setuid二进制文件将“知道”从中执行的UID,并且可以返回到该UID。在这种情况下,/bin/sh
的bash实现会在执行时自动返回其真实的UID。