这是我的 c 代码片段test.c。
printf("ruid:%d, euid:%d\n",getuid(),geteuid());
char *args[] = {"/bin/bash","-c","exec id",0};
execv("/bin/bash",args);
我用 编译代码sudo gcc test.c -o test; sudo chmod +s ./test,所以程序test有 suid 位并且归 root 所有。
printf输出为预期的, ruid:1000, euid:0, 但程序id指示ruid和euid都是1000.