[英]setegid() in a suid-root binary in C
晚上好,我试图用C写一个suid-root二进制文件,我偶然发现了以下问题:我以非特权用户user1的身份执行它,并且能够使用setuid / seteuid更改为任何用户id想。 问题是我无法使用有效的组ID来做到这一点。 部分代码:
if ( setegid(VariableID) == -1 ) {
perror("setegid failed");
exit(1);
}
这将返回:
setegid failed: Operation not permitted
请注意,我可以在root(0)和执行二进制文件的用户之间成功更改组ID,但不能更改为其他组。 因为二进制文件像UID / EUID一样是suid-root,所以这不可能吗?
答案(感谢Ingo Leonhardt)是您需要在用户ID之前更改组ID。 现在有点有意义了.. :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.