Добрый вечер, я пытаюсь написать двоичный файл suid-root на C, и я наткнулся на следующую проблему: я выполняю его как непривилегированный пользователь user1, и я могу использовать setuid / seteuid для изменения любого идентификатора пользователя, который я хотеть. Проблема в том, что я не могу этого сделать с эффективными идентификаторами групп. Часть кода:
if ( setegid(VariableID) == -1 ) {
perror("setegid failed");
exit(1);
}
и это возвращается:
setegid failed: Operation not permitted
Обратите внимание, что я могу успешно изменять идентификаторы групп между пользователем root (0) и пользователем, который выполняет двоичный файл, но я не могу переключаться на другие группы. Разве это не должно быть возможным, поскольку двоичный файл имеет suid-root, как UID / EUID?