- ベストアンサー
あるgroupに入っているユーザを表示
あるグループのユーザを一覧で表示させたいのです。 例えば、「ftp」というグループがあります。 このグループには hoge / hoge2 /hoge3 というユーザがグループ指定しているとしたとき ----------------------- # group-hyouji ftp hoge hoge2 hoge3 ----------------------- のようにユーザを表示させる 「group-hyouji」と同じ機能の コマンドとかってないんですかね。。。 ※group-hyoujiこんなコマンドはないとは思いますが、
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
以下をt01.cとして保存して、 gcc t01.c -o group-hyouji ./group-hyouji ftp とすると良い事があるかも。 #include <unistd.h> #include <stdio.h> #include <grp.h> #include <pwd.h> #include <sys/types.h> int main(int argc, char * argv[]) { struct group *g; struct passwd *p; int i; if (argc < 2) { printf("Usage: %s username\n", argv[0]); return 1; } g = getgrnam(argv[1]); if (g == NULL) { printf("Error: %sというグループは存在しません\n", argv[1]); return 1; } for (i = 0; g->gr_mem[i]; i++) { printf("%s\n", g->gr_mem[i]); } while(p = getpwent()) { if (p->pw_gid == g->gr_gid) { for (i = 0; g->gr_mem[i]; i++) { if (strcmp(g->gr_mem[i], p->pw_name) == 0) break; } if (g->gr_mem[i] == NULL) printf("%s\n", p->pw_name); } } return 0; }
その他の回答 (3)
- ysk6406
- ベストアンサー率40% (237/589)
#1です。書き忘れました。 #1に加えて、「/etc/groupのftpグループのメンバーリストを検索して表示する」機能が必要です。
お礼
コマンドを作るとか初心者なため全然わかりません。 >(利用可能な言語等)といいますと perlとかpythonとかですよね?
- info22
- ベストアンサー率55% (2225/4034)
/etc/groupファイルの中を以下のように検索するのではだめですか? % grep hoge /etc/group
お礼
???すいません、ちょっと自分にはわからないのですが、 /etc/group ファイルは 各グループ名とグループIDがはいっているだけかと 思っているのですけど、違いましたか?
- ysk6406
- ベストアンサー率40% (237/589)
自分がどことどこのgroupに所属しているかを表示するコマンドはありますが、あるgropのメンバーを一覧表示するコマンドはなかったと思います。 (私も昔、自分で作りました。) /etc/groupを参照して「ftp」というグループ名をグループIDに変換し、/etc/passwdのグループIDフィールドをそのIDで検索すれば、簡単にできます。 そちらの環境(利用可能な言語等)がわかれば、具体的なコードのサンプルを示すこともできますが…
お礼
なるほど、そうですね。 たしかにできます^^ ありがとうございました。
お礼
おおおお!すげぇですね^^ group-hyoujiをそのまま使ってくださったのが 笑えました。 簡単なもんなのでしょうか? 今度は自分でコマンド作れるようになりたいです。 こちらのコマンドは以後使って行きたいと思います。 ありがとうございました。