我正在尝试找到一种方法来获取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访问的所有组
答案 0 :(得分:2)
使用getgrouplist(3)
功能,它完全符合您的要求。它需要用户名,所以如果你想列出具有给定UID的用户的所有组,你首先需要借助getpwuid_r(3)
函数将UID翻译成用户名。