Вот мой фрагмент кода 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
.