я следующий код:УИП() возвращает 0, но не имеет никакого эффекта
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
void main(int argc, char* argv[]) {
printf("uid=%u euid=%u\n", getuid(), geteuid());
printf("%d = setuid(euid)\n", setuid(geteuid()));
printf("uid=%u euid=%u\n", getuid(), geteuid());
}
Составитель и запустить этот путь:
[email protected]:/tmp $ sudo gcc foo.c
[email protected]:/tmp $ sudo chown dev-misc:dev-misc a.out
[email protected]:/tmp $ sudo chmod u+s a.out
[email protected]:/tmp $ ./a.out
uid=1000 euid=1006
0 = setuid(euid)
uid=1000 euid=1006
Почему UID, остаются неизменными? И почему setuid сообщает об успехе? (согласно странице руководства, 0 означает успех)