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