1

UNIX ユーザーがアクセスできるすべてのグループのリストを取得する方法を見つけようとしています。UNIX ユーザー名またはユーザーの uid を引数として C++ プログラムに渡し、このユーザーがアクセスできるグループのリストを返すことができるようにしたいと考えています。私はこれについていくつか読んだことがありますが、これは getgroups() を使用して達成できることがわかりますが、特定のユーザー名または uid を getgroups に渡すことによってこれを行う方法の例を見つけることができません。私が見つけたすべての例は、私のユーザーアカウントのすべてのグループ、またはプログラムを実行している人の有効な uid を表示しているように見えます。どうすればこれができるか教えてください。

struct passwd からすべてのユーザー アカウント情報を取得でき、UNIX ユーザーのユーザー名である argv[1] を渡し、これを getgrgid に渡すことができます: (getpwnam_r(argv[1], my_passwd, pwdbuffer, pwdlinelen, &tempPwdPtr)) ! = 0) argv[1] の値を使用して、UNIX ユーザーが getgroups を使用してアクセスできるすべてのグループを調べる方法がわかりません。

4

1 に答える 1

2

Use getgrouplist(3) function, it does exactly what you want. It expected username so if you want to list all the groups user with given UID is part of, you need first to translate UID to username with help of getpwuid_r(3) function.

于 2013-01-03T14:52:02.673 に答える