.\" Updated 2008-08-04, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.05
.\" Updated 2012-04-30, Akihiro MOTOKI <amotoki@gmail.com>
.\"
-.TH GETGROUPS 2 2010\-11\-22 Linux "Linux Programmer's Manual"
+.TH GETGROUPS 2 2014\-08\-19 Linux "Linux Programmer's Manual"
.SH 名前
getgroups, setgroups \- 補助グループ ID のリストを取得/設定する
.SH 書式
.SH 説明
.PP
\fBgetgroups\fP() は呼び出し元プロセスの補助グループ (supplementary group) ID を \fIlist\fP に返す。
-\fIsize\fP å¼\95ã\81\8dæ\95°ã\81«ã\81¯ã\80\81 \fIlist\fP ã\81«ã\82\88ã\82\8aå\8f\82ç\85§ã\81\95ã\82\8cã\82\8bã\83\90ã\83\83ã\83\95ã\82¡ã\81«æ ¼ç´\8dã\81§ã\81\8dã\82\8bè¦\81ç´ ã\81®æ\9c\80大æ\95°ã\82\92è¨å®\9aã\81\99ã\81¹ã\81\8dã\81§ã\81\82ã\82\8bã\80\82 å\91¼ã\81³å\87ºã\81\97å\85\83ã\83\97ã\83ã\82»ã\82¹ã\81\8c \fIsize\fP
-個より多くの補助グループのメンバの場合には、エラーとなる。 この関数を呼び出したプロセスの実効グループ ID が、
+\fIsize\fP å¼\95ã\81\8dæ\95°ã\81«ã\81¯ã\80\81 \fIlist\fP ã\81«ã\82\88ã\82\8aå\8f\82ç\85§ã\81\95ã\82\8cã\82\8bã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81«æ ¼ç´\8dã\81§ã\81\8dã\82\8bè¦\81ç´ ã\81®æ\9c\80大æ\95°ã\82\92è¨å®\9aã\81\99ã\81¹ã\81\8dã\81§ã\81\82ã\82\8bã\80\82 å\91¼ã\81³å\87ºã\81\97å\85\83ã\83\97ã\83ã\82»ã\82¹ã\81\8c
+\fIsize\fP 個より多くの補助グループのメンバの場合には、エラーとなる。 この関数を呼び出したプロセスの実効グループ ID が、
返されるリストに含まれるかどうかは規定されていない (したがって、アプリケーションは \fBgetegid\fP(2)
を呼び出し、その結果の値を追加・削除すべきである)。
\fIsize\fP が 0 ならば、 \fIlist\fP は修正されないが、そのプロセスの補助グループ ID の合計数が返される。 これを使うことで、それ以降の
-\fBgetgroups\fP() の呼び出しで必要となる動的割り当てバッファ \fIlist\fP のサイズを、呼び出し元が決定することができる。
+\fBgetgroups\fP() の呼び出しで必要となる動的割り当てバッファー \fIlist\fP のサイズを、呼び出し元が決定することができる。
.PP
\fBsetgroups\fP() は、呼び出し元プロセスの補助グループ ID を設定する。 適切な特権 (Linux では \fBCAP_SETGID\fP
ケーパビリティ (capability)) が必要である。 \fIsize\fP 引き数には、 \fIlist\fP
-により参照されるバッファに格納された補助グループ ID の数を指定する。
+ã\81«ã\82\88ã\82\8aå\8f\82ç\85§ã\81\95ã\82\8cã\82\8bã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81«æ ¼ç´\8dã\81\95ã\82\8cã\81\9fè£\9cå\8a©ã\82°ã\83«ã\83¼ã\83\97 ID ã\81®æ\95°ã\82\92æ\8c\87å®\9aã\81\99ã\82\8bã\80\82
.SH 返り値
\fBgetgroups\fP() は、成功すると補助グループ ID の数を返す。 エラーの場合 \-1 を返し、 \fIerrno\fP を適切に設定する。
2.6.4 以降では 65536)。
.TP
\fBENOMEM\fP
-メモリ不足。
+メモリー不足。
.TP
\fBEPERM\fP
呼び出し元プロセスが十分な特権を持っていない。
SVr4, 4.3BSD. \fBgetgroups\fP() 関数は POSIX.1\-2001 に準拠している。 \fBsetgroups\fP()
は特権を必要とするため、POSIX.1\-2001 に従っていない。
.SH 注意
-プロセスは、実効グループ ID に加え、最大 \fBNGROUPS_MAX\fP までの補助グループ ID を持つことができる。 補助グループ ID
-の集合は親プロセスから継承され、 \fBexecve\fP(2) の前後で保持される。
+プロセスは、実効グループ ID に加え、最大 \fBNGROUPS_MAX\fP までの補助グループ ID を持つことができる。 定数
+\fBNGROUPS_MAX\fP は \fI<limits.h>\fP で定義されている。 補助グループ ID の集合は親プロセスから継承され、
+\fBexecve\fP(2) の前後で保持される。
-補助グループ ID の最大数は \fBsysconf\fP(3) を使って以下のようにして調べることができる:
+補助グループ ID の最大数は、実行時に \fBsysconf\fP(3) を使って以下のようにして調べることができる:
.nf
long ngroups_max;
ngroups_max = sysconf(_SC_NGROUPS_MAX);
.fi
-\fBgetgroups\fP() の返り値の最大値は、この値より 1 大きい値より大きくなることはない。
+\fBgetgroups\fP() の返り値の最大値は、この値より大きくなることはない。 Linux 2.6.4 以降では、補助グループ ID の最大数も
+Linux 固有の読み込み専用のファイル \fI/proc/sys/kernel/ngroups_max\fP 経由で公開されている。
元々の Linux の \fBgetgroups\fP() システムコールは 16 ビットのグループ ID だけ
に対応していた。その後、Linux 2.4 で、32 ビットの ID に対応した
\fBgetgroups\fP() が追加された。glibc の \fBgetgroups\fP のラッパー関数はカーネル
バージョンによるこの違いを吸収している。
.SH 関連項目
-\fBgetgid\fP(2), \fBsetgid\fP(2), \fBgetgrouplist\fP(3), \fBinitgroups\fP(3),
-\fBcapabilities\fP(7), \fBcredentials\fP(7)
+\fBgetgid\fP(2), \fBsetgid\fP(2), \fBgetgrouplist\fP(3), \fBgroup_member\fP(3),
+\fBinitgroups\fP(3), \fBcapabilities\fP(7), \fBcredentials\fP(7)
.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.54 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。