EN JA
SETNETGRENT(3)
SETNETGRENT(3) Linux Programmer's Manual SETNETGRENT(3)

名前

setnetgrent, endnetgrent, getnetgrent, getnetgrent_r, innetgr -ネットワーク・グループのエントリを操作する

書式


#include <netdb.h>


int setnetgrent(const char *netgroup);


void endnetgrent(void);


int getnetgrent(char **host, char **user, char **domain);


int getnetgrent_r(char **host, char **user,
char **domain, char *buf, int buflen);


int innetgr(const char *netgroup, const char *host,
const char *user, const char *domain);

 


glibc 向けの機能検査マクロの要件 ( feature_test_macros(7) 参照):

 

setnetgrent(), endnetgrent(), getnetgrent(), getnetgrent_r(), innetgr(): _BSD_SOURCE || _SVID_SOURCE

説明

netgroup は SunOS で考案されたものである。ネットグループのデータベースのエントリは、 3 つの文字列のリスト ( hostname, username, domainname) もしくはネットグループ名である。前記のリストの各要素は空であってもよい。空は何とでも一致することを意味する。本ページで説明する関数を使うことで、ネットグループのデータベースにアクセスすることができる。どのデータベースが検索されるかは /etc/nsswitch.conf ファイルで定義されている。

setnetgrent() コールは、この後で呼ばれる getnetgrent() コールが検索するネットグループを定める。 getnetgrent() 関数はネットグループの次のエントリを取得し、 host, user, domain にポインタを入れて返る。 NULL ポインタは、対応するエントリがどんな文字列とも一致することを意味する。得られたポインタは、ネットグループ関係の関数のいずれかが呼ばれるまでの間だけ有効である。この問題を避けるためには GNU 拡張の関数 getnetgrent_r() を使うとよい。この関数は呼び出し側が用意したバッファに文字列を格納する。割り当て済のバッファを全て解放するには endnetgrent() を使用する。

ほとんどの場合、 ( hostname, username, domainname) の3要素の組がネットグループのメンバーかどうかを確認したいだけであろう。 innetgr() 関数を使うと、上記の3つの関数を呼び出さずにこの目的を達成できる。もう一度書いておくが、NULL ポインタはワイルドカードであり、あらゆる文字列と一致する。この関数はスレッドセーフである。

返り値

これらの関数は成功すると 1 を、失敗すると 0 を返す。

ファイル

/etc/netgroup
 
/etc/nsswitch.conf

準拠

これらの関数は POSIX.1-2001 にはないが、 setnetgrent (), endnetgrent (), getnetgrent (), innetgr () はほとんどの UNIX システムで利用可能である。 getnetgrent_r() は広く他のシステムで利用できるわけではない。

注意

BSD の実装では setnetgrent() は void を返す。

関連項目

sethostent(3), setprotoent(3), setservent(3)

この文書について

この man ページは Linux man-pages プロジェクトのリリース 3.51 の一部である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
2007-07-26 GNU