在Linux中使用setuid位

3

我有这个C文件:

#include <stdio.h>
#include <unistd.h>

int main(void)
{
    printf("%s\n", getlogin());
    printf("%i\n", getuid());
}

我编译它,将UID和GID都设置为root并设置setuid位,这样它看起来就像这样:

-rwsrwsr-x 1 root    root    8735 Apr  8 19:51 a.out

然而,当我调用$ ./a.out时,仍然会得到以下结果:

user
1000

我做错了什么?
2个回答

4

“真实用户ID”仍然是调用程序的用户,但“有效用户ID”是根用户。在setuid程序中,两者不同。

要获取有效用户ID,请调用geteuid()。您还可以使用cuserid()获取与有效用户ID关联的名称。


我怎样才能获取EUID的名称? - hgiesel

1
你的程序只有更改uid的权限。要真正切换到root,你需要在其中调用setuid(0)。 请查看这里

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接