0

linux 'id' 命令报告该进程所属的 groups=。何时以及如何填写?

我正在编写一个 suid/sgid 程序,似乎这些组永远不会为我的进程填充,也许只是巧合,但是与 nfs 挂载的文件系统有关的权限也不能正常工作(顺便说一句,我玩过 no_root_squash 并没有帮助)

4

3 回答 3

2

在大多数情况下,补充组由 设置login

如果您想自己设置它们,您将需要函数getgrouplist()setgroups()from <grp.h>- 请注意,您需要成为 root 才能setgroups()成功调用。

于 2009-09-28T22:08:57.267 回答
1

谢谢, setgroups() 几乎是答案。但是,我最终使用了 initgroups(),它的效果非常好。在我从 root 执行 setuid 之前进行了调用。

在手册页 NAME initgroups 中找到了这个 - 初始化补充组访问列表

概要 #include #include

   int initgroups(const char *user, gid_t group);

显然,如果组来自 LDAP,您需要这样做才能正确填写它们。

于 2009-10-09T17:13:45.627 回答
0
  • 多组成员资格通常在登录时设置,但使用不多。SOP 通常是给每个用户自己的组。

  • 网络文件系统通常不尊重本地客户端根权限。

于 2009-09-28T22:12:44.093 回答