使用 C 在 Linux 中设置用户的补充组 ID



C中setgroups(size_t size, const gid_t *list)方法允许我设置调用进程的补充组ID。

问题1:

但是为了运行它,我们需要拥有适当的权限,所以我运行这个程序而不会出现不允许操作错误的唯一方法是使用 root 运行它。但这是否意味着使用这种方法我们只能设置根组?

问题2:

另一方面,我打算做的是给定一个特定的用户和一个 gid 列表,我想将给定的 gid 设置为给定用户的补充组。C/C++ 中是否为此定义了方法?

提前致谢

从技术上讲,在Linux下,你需要CAP_SETGID功能,它不需要是root(但通常是)。

请注意,这适用于有效gid,而不是实际gid。还要注意的是,调用过程的实际/有效gid不一定与实际/有效uid相同。您应该查看 setuidseteuidsetgidsetegid 的手册页以获取更多详细信息,但一种情况是 SUID 程序setegid回非特权组,然后使用 setgroups

相关内容

  • 没有找到相关文章

最新更新