1

我正在尝试找到一种方法来获取 unix 用户可以访问的所有组的列表。我希望能够将 unix 用户名或用户的 uid 作为参数传递给 c++ 程序,然后返回该用户有权访问的组列表。我已经对此进行了一些阅读,据我所知,这可以使用 getgroups() 来实现,但我找不到如何通过将特定用户名或 uid 传递给 getgroups 来执行此操作的示例。我发现的所有示例似乎只显示了我的用户帐户的所有组或运行程序的人的有效 uid。请你能帮我解决这个问题吗?

我可以从 struct passwd 获取所有用户帐户信息,并且能够传递 argv[1] 这是一个 unix 用户用户名并将其传递给 getgrgid: (getpwnam_r(argv[1], my_passwd, pwdbuffer, pwdlinelen, &tempPwdPtr)) ! = 0) 我只是不知道如何使用 argv[1] 的值并找出 unix 用户可以使用 getgroups 访问的所有组

4

1 回答 1

2

使用getgrouplist(3)功能,它正是你想要的。它需要用户名,因此如果您想列出所有具有给定 UID 的用户所在的组,您首先需要借助getpwuid_r(3)函数将 UID 转换为用户名。

于 2013-01-03T14:52:02.673 回答