以下是test.c
的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
。