linux 'id‘命令报告进程所属的groups=。何时以及如何填写此信息?
我正在编写一个suid/sgid程序,似乎从来没有为我的进程填充组,也许只是巧合,但是关于nfs挂载文件系统的权限也不能为它正常工作(顺便说一句,我使用过no_root_squash,这没有帮助)。
发布于 2009-09-28 22:08:57
在大多数情况下,补充组由login设置。
如果您想自己设置它们,您将需要<grp.h>中的函数getgrouplist()和setgroups() -请注意,您需要是根用户才能成功调用setgroups()。
发布于 2009-10-09 17:13:46
谢谢,setgroups()几乎就是答案。然而,我最终使用了initgroups(),它工作得非常好。这个调用是在我离开root执行setuid之前发出的。
在手册页名为initgroups - initialize该补充组访问列表中找到此信息
简介#include #include #include
int initgroups(const char *user, gid_t group);显然,如果这些组来自LDAP,那么您需要这样做才能正确地填充它们。
发布于 2009-09-28 22:12:44
https://stackoverflow.com/questions/1489579
复制相似问题