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

时间:2014-03-02 19:31:05

标签: c++ c linux usergroups

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

问题1:

但是为了运行它,我们需要拥有适当的权限,所以我在没有得到操作不允许错误的情况下运行该程序的唯一方法是使用root运行它。但这是否意味着使用这种方法我们只能设置根组?

问题2:

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

提前致谢

1 个答案:

答案 0 :(得分:0)

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

请注意,这适用于有效的gid,而不是实际的gid。另请注意,调用进程的实际/有效gid不一定与实际/有效uid相同。您应该查看setuidseteuidsetgidsetegid的联机帮助页以获取更多详细信息,但有一种情况是针对SUID程序{{1}回到无特权的群体,然后使用setegid