我正试图找到一种方法来获得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转换为用户名。