• ベストアンサー

あるgroupに入っているユーザを表示

あるグループのユーザを一覧で表示させたいのです。 例えば、「ftp」というグループがあります。 このグループには hoge / hoge2 /hoge3 というユーザがグループ指定しているとしたとき ----------------------- # group-hyouji ftp hoge hoge2 hoge3 ----------------------- のようにユーザを表示させる 「group-hyouji」と同じ機能の コマンドとかってないんですかね。。。 ※group-hyoujiこんなコマンドはないとは思いますが、

質問者が選んだベストアンサー

  • ベストアンサー
  • coredump
  • ベストアンサー率46% (12/26)
回答No.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; }

nemaka
質問者

お礼

おおおお!すげぇですね^^ group-hyoujiをそのまま使ってくださったのが 笑えました。 簡単なもんなのでしょうか? 今度は自分でコマンド作れるようになりたいです。 こちらのコマンドは以後使って行きたいと思います。 ありがとうございました。

その他の回答 (3)

  • ysk6406
  • ベストアンサー率40% (237/589)
回答No.3

#1です。書き忘れました。 #1に加えて、「/etc/groupのftpグループのメンバーリストを検索して表示する」機能が必要です。

nemaka
質問者

お礼

コマンドを作るとか初心者なため全然わかりません。 >(利用可能な言語等)といいますと perlとかpythonとかですよね?

  • info22
  • ベストアンサー率55% (2225/4034)
回答No.2

/etc/groupファイルの中を以下のように検索するのではだめですか? % grep hoge /etc/group

nemaka
質問者

お礼

???すいません、ちょっと自分にはわからないのですが、 /etc/group ファイルは 各グループ名とグループIDがはいっているだけかと 思っているのですけど、違いましたか?

  • ysk6406
  • ベストアンサー率40% (237/589)
回答No.1

自分がどことどこのgroupに所属しているかを表示するコマンドはありますが、あるgropのメンバーを一覧表示するコマンドはなかったと思います。 (私も昔、自分で作りました。) /etc/groupを参照して「ftp」というグループ名をグループIDに変換し、/etc/passwdのグループIDフィールドをそのIDで検索すれば、簡単にできます。 そちらの環境(利用可能な言語等)がわかれば、具体的なコードのサンプルを示すこともできますが…

nemaka
質問者

お礼

なるほど、そうですね。 たしかにできます^^ ありがとうございました。

関連するQ&A