Provided by: manpages-ja-dev_0.5.0.0.20210215+dfsg-1_all bug

名前

       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, size_t 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
       にポインターを入れて返る。ヌルポインターは、対応するエントリーがどんな文字列とも一致するこ
       とを意味する。 得られたポインターは、ネットグループ関係の関数のいずれかが呼ばれるまでの 間
       だけ有効である。この問題を避けるためには  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.79 の一部  である。プロジェクト
       の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。