プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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;
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/06/17 19:02

#1です。

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

コマンドを作るとか初心者なため全然わかりません。

>(利用可能な言語等)といいますと
perlとかpythonとかですよね?

お礼日時:2005/06/17 11:56

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


% grep hoge /etc/group
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/06/17 11:50

自分がどことどこのgroupに所属しているかを表示するコマンドはありますが、あるgropのメンバーを一覧表示するコマンドはなかったと思います。


(私も昔、自分で作りました。)

/etc/groupを参照して「ftp」というグループ名をグループIDに変換し、/etc/passwdのグループIDフィールドをそのIDで検索すれば、簡単にできます。

そちらの環境(利用可能な言語等)がわかれば、具体的なコードのサンプルを示すこともできますが…
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/06/17 11:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!