我试图找到一种方法来获取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访问的所有组
最佳答案
使用getgrouplist(3)
函数,它可以完全满足您的要求。预期的用户名,因此,如果要列出具有给定UID的所有组用户,则需要首先通过getpwuid_r(3)
函数将UID转换为用户名。