我有这个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

我究竟做错了什么?

最佳答案

实际用户ID仍然是调用程序的用户,但是有效用户ID是root。在setuid程序中,它们是不同的。

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

关于c - 在Linux中使用setuid位,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36506273/

10-10 01:54