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