gpt4 book ai didi

c - setgid() 失败 - 不允许操作

转载 作者:太空狗 更新时间:2023-10-29 15:45:17 25 4
gpt4 key购买 nike

我在 C 中创建了一个 setuid 程序。可执行文件如下所示:

-r-s-r-s--- 1 root users 13073 Jun 15 21:56 server

我以 userA/users 身份执行程序,并尝试将 uid/gid 设置为 userB/otherUserssetgid() 失败,不允许操作。 userA 不属于 otherUsers 如何更改有效的 gid?


[编辑] 以下是我所做工作的一个小总结。我的 C 程序以 userA 身份执行,将 uid 和 gid 设置为 userB 并创建一个文件。与预期不同,该文件属于组 root,因为 setgid() 失败。

[userA@node uid]$ id
uid=11945(userA) gid=544(users) groups=544(users)
[userA@node uid]$ id userB
uid=11946(userB) gid=10792(otherUsers) groups=10792(otherUsers)
[userA@node uid]$ cat uid.c
#include <stdio.h>
#include <unistd.h>

int main() {
setuid(11946);
setgid(10792);

FILE *f = fopen("userB_file", "w");
fclose(f);

return 0;
}
[userA@node uid]$ ls -l uid
-r-sr-sr-x 1 root root 7130 Jun 17 14:16 uid
[userA@node uid]$ ./uid
[userA@node uid]$ ls -l userB_file
-rw-r--r-- 1 userB root 0 Jun 17 14:19 userB_file

最佳答案

我怀疑您在 setgid 之前调用了 setuid。一旦您调用 setuid 将 uid 更改为 root 以外的其他内容,您就失去了将 gid 更改为任意值的权限。您必须先调用 setgid,然后调用 setuid

关于c - setgid() 失败 - 不允许操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11061027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com