У меня есть доступ к папке как группы (включая пароль). Есть 2 файла: file & secret: Это разрешения:

-rwsr-sr-x 1 корневой корень 8,9 тыс. 29 апр. 2016 г. файл

-r - r - r-- 1 корневой корень 944 28 апреля 2016 г. file.c

-rw ------- 1 root root 33 мая 14 22:31 secret

Я должен получить содержимое секрета. Частью файла file.c является следующий код:

{
    if(argc !=2){
        printf("%s [executable to run on the grid]\n",argv[0]);
        exit(0);
}

FILE *fp = fopen("key", "r");
if (getuid() == 0) {
    /* process is running as root, drop privileges */
    initgroups("filepointers",1003);
    if (setgid(1003) != 0)
        printf("setgid: Unable to drop group privileges:");
    if (setuid(1003) != 0)
        printf("setuid: Unable to drop user privileges:");
}

После этого он открывает секрет и форкс + execls - я пропустил какой-то неуместный код.

if (pid ==0){
    int error = execl(argv[1],"command",NULL);
    if(error ==-1)
        perror("execl");
    }
exit(0);
}

Есть идеи, как превзойти разрешения? Судо было бы логичным ответом, но, поскольку это не входит в мои полномочия, это не вариант. Я думаю, что мне нужно что-то сделать с setuid - но понятия не имею, как. Любые советы будут оценены. :)

0