У меня есть очень простая программа:
#define _GNU_SOURCE
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
void error(char *msg) {
printf(msg);
exit(-1);
}
int main(int argc, char **argv) {
uid_t ruid, euid, suid;
if (getresuid(&ruid, &euid, &suid) < 0)
error("Error getting process uids");
printf("%d %d %d\n", ruid, euid, suid);
}
Составляется следующим образом:
gcc -o печать print.c
Он принадлежит root и имеет установленный бит setuid:
-rwsrwxr-x 1 root root 8648 8 октября 20:10 ./print*
Однако, когда я запускаю его, я получаю следующие разрешения:
1000 1000 1000
Таким образом, как настоящие, действующие, так и сохраненные разрешения set-uid принадлежат мне (1000), а не root. Кто-нибудь столкнулся с этим? любой совет?