.\" Updated & Modified 2004-12-30, Yuichi SATO <ysato444@yahoo.co.jp>
.\" Updated 2008-08-04, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.05
.\"
-.\"WORD: group ¥°¥ë¡¼¥×
-.\"WORD: access ¥¢¥¯¥»¥¹
-.\"WORD: process ¥×¥í¥»¥¹
-.\"WORD: super user ¥¹¡¼¥Ñ¡¼¡¦¥æ¡¼¥¶¡¼
-.\"WORD: supplementary group Êä½õ¥°¥ë¡¼¥×
+.\"WORD: group グループ
+.\"WORD: access ã\82¢ã\82¯ã\82»ã\82¹
+.\"WORD: process ã\83\97ã\83ã\82»ã\82¹
+.\"WORD: super user ã\82¹ã\83¼ã\83\91ã\83¼ã\83»ã\83¦ã\83¼ã\82¶ã\83¼
+.\"WORD: supplementary group 補助グループ
.\"
.TH GETGROUPS 2 2008-06-03 "Linux" "Linux Programmer's Manual"
-.SH ̾Á°
-getgroups, setgroups \- Êä½õ¥°¥ë¡¼¥× ID ¤Î¥ê¥¹¥È¤ò¼èÆÀ/ÀßÄꤹ¤ë
-.SH ½ñ¼°
+.SH 名前
+getgroups, setgroups \- 補助グループ ID のリストを取得/設定する
+.SH 書式
.B #include <sys/types.h>
.br
.B #include <unistd.h>
.BI "int setgroups(size_t " size ", const gid_t *" list );
.sp
.in -4n
-glibc ¸þ¤±¤Îµ¡Ç½¸¡ºº¥Þ¥¯¥í¤ÎÍ×·ï
+glibc 向けの機能検査マクロの要件
.RB ( feature_test_macros (7)
-»²¾È):
+参照):
.in
.sp
.BR setgroups ():
_BSD_SOURCE
-.SH ÀâÌÀ
+.SH 説明
.PP
.BR getgroups ()
-¤Ï¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤ÎÊä½õ¥°¥ë¡¼¥× (supplementary group) ID ¤ò
+は呼び出し元プロセスの補助グループ (supplementary group) ID を
.I list
-¤ËÊÖ¤¹¡£
+に返す。
.I size
-°ú¤¿ô¤Ë¤Ï¡¢
+引き数には、
.I list
-¤Ë¤è¤ê»²¾È¤µ¤ì¤ë¥Ð¥Ã¥Õ¥¡¤Ë³ÊǼ¤Ç¤¤ëÍ×ÁǤκÇÂç¿ô¤òÀßÄꤹ¤Ù¤¤Ç¤¢¤ë¡£
-¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤¬
+により参照されるバッファに格納できる要素の最大数を設定すべきである。
+呼び出し元プロセスが
.I size
-¸Ä¤è¤ê¿¤¯¤ÎÊä½õ¥°¥ë¡¼¥×¤Î¥á¥ó¥Ð¤Î¾ì¹ç¤Ë¤Ï¡¢¥¨¥é¡¼¤È¤Ê¤ë¡£
-¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¼Â¸ú¥°¥ë¡¼¥× ID ¤¬¡¢
-ÊÖ¤µ¤ì¤ë¥ê¥¹¥È¤Ë´Þ¤Þ¤ì¤ë¤«¤É¤¦¤«¤Ïµ¬Äꤵ¤ì¤Æ¤¤¤Ê¤¤
-(¤·¤¿¤¬¤Ã¤Æ¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï
+個より多くの補助グループのメンバの場合には、エラーとなる。
+この関数を呼び出したプロセスの実効グループ ID が、
+返されるリストに含まれるかどうかは規定されていない
+(したがって、アプリケーションは
.BR getegid (2)
-¤ò¸Æ¤Ó½Ð¤·¡¢¤½¤Î·ë²Ì¤ÎÃͤòÄɲᦺï½ü¤¹¤Ù¤¤Ç¤¢¤ë)¡£
+を呼び出し、その結果の値を追加・削除すべきである)。
.I size
-¤¬ 0 ¤Ê¤é¤Ð¡¢
+が 0 ならば、
.I list
-¤Ï½¤Àµ¤µ¤ì¤Ê¤¤¤¬¡¢¤½¤Î¥×¥í¥»¥¹¤ÎÊä½õ¥°¥ë¡¼¥× ID ¤Î¹ç·×¿ô¤¬ÊÖ¤µ¤ì¤ë¡£
-¤³¤ì¤ò»È¤¦¤³¤È¤Ç¡¢¤½¤ì°Ê¹ß¤Î
+は修正されないが、そのプロセスの補助グループ ID の合計数が返される。
+これを使うことで、それ以降の
.BR getgroups ()
-¤Î¸Æ¤Ó½Ð¤·¤ÇɬÍפȤʤëưŪ³ä¤êÅö¤Æ¥Ð¥Ã¥Õ¥¡
+ã\81®å\91¼ã\81³å\87ºã\81\97ã\81§å¿\85è¦\81ã\81¨ã\81ªã\82\8bå\8b\95ç\9a\84å\89²ã\82\8aå½\93ã\81¦ã\83\90ã\83\83ã\83\95ã\82¡
.I list
-¤Î¥µ¥¤¥º¤ò¡¢¸Æ¤Ó½Ð¤·¸µ¤¬·èÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë¡£
+のサイズを、呼び出し元が決定することができる。
.PP
.BR setgroups ()
-¤Ï¡¢¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤ÎÊä½õ¥°¥ë¡¼¥× ID ¤òÀßÄꤹ¤ë¡£
-ŬÀÚ¤ÊÆø¢ (Linux ¤Ç¤Ï
+は、呼び出し元プロセスの補助グループ ID を設定する。
+適切な特権 (Linux では
.B CAP_SETGID
-¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£ (capability)) ¤¬É¬ÍפǤ¢¤ë¡£
+ケーパビリティ (capability)) が必要である。
.I size
-°ú¤¿ô¤Ë¤Ï¡¢
+引き数には、
.I list
-¤Ë¤è¤ê»²¾È¤µ¤ì¤ë¥Ð¥Ã¥Õ¥¡¤Ë³ÊǼ¤µ¤ì¤¿Êä½õ¥°¥ë¡¼¥× ID ¤Î¿ô¤ò»ØÄꤹ¤ë¡£
-.SH ÊÖ¤êÃÍ
+により参照されるバッファに格納された補助グループ ID の数を指定する。
+.SH 返り値
.BR getgroups ()
-¤Ï¡¢À®¸ù¤¹¤ë¤ÈÊä½õ¥°¥ë¡¼¥× ID ¤Î¿ô¤òÊÖ¤¹¡£
-¥¨¥é¡¼¤Î¾ì¹ç \-1 ¤òÊÖ¤·¡¢
+は、成功すると補助グループ ID の数を返す。
+エラーの場合 \-1 を返し、
.I errno
-¤òŬÀÚ¤ËÀßÄꤹ¤ë¡£
+を適切に設定する。
.BR setgroups ()
-¤Ï¡¢À®¸ù¤¹¤ë¤È 0 ¤òÊÖ¤¹¡£
-¥¨¥é¡¼¤Î¾ì¹ç \-1 ¤òÊÖ¤·¡¢
+は、成功すると 0 を返す。
+エラーの場合 \-1 を返し、
.I errno
-¤òŬÀÚ¤ËÀßÄꤹ¤ë¡£
-.SH ¥¨¥é¡¼
+を適切に設定する。
+.SH ã\82¨ã\83©ã\83¼
.TP
.B EFAULT
.I list
-¤¬ÉÔÀµ¤Ê¥¢¥É¥ì¥¹¤Ç¤¢¤ë¡£
+が不正なアドレスである。
.PP
.BR getgroups ()
-¤Ï¡¢¾åµ¤Ë²Ã¤¨¤Æ°Ê²¼¤Î¥¨¥é¡¼¤Ç¼ºÇÔ¤¹¤ë²ÄǽÀ¤¬¤¢¤ë¡£
+は、上記に加えて以下のエラーで失敗する可能性がある。
.TP
.B EINVAL
.I size
-¤¬Êä½õ¥°¥ë¡¼¥× ID ¤Î¿ô¤è¤ê¾®¤µ¤¤¤¬ 0 ¤Ç¤Ê¤¤¡£
+が補助グループ ID の数より小さいが 0 でない。
.PP
.BR setgroups ()
-¤Ï¡¢¾åµ¤Ë²Ã¤¨¤Æ°Ê²¼¤Î¥¨¥é¡¼¤Ç¼ºÇÔ¤¹¤ë²ÄǽÀ¤¬¤¢¤ë¡£
+は、上記に加えて以下のエラーで失敗する可能性がある。
.TP
.B EINVAL
.I size
-¤¬
+が
.B NGROUPS_MAX
-¤è¤êÂ礤¤
+より大きい
.RB ( NGROUPS_MAX
-¤Ï Linux 2.6.4 ¤è¤êÁ°¤Ç¤Ï 32¡¢Linux 2.6.4 °Ê¹ß¤Ç¤Ï 65536)¡£
+は Linux 2.6.4 より前では 32、Linux 2.6.4 以降では 65536)。
.TP
.B ENOMEM
-¥á¥â¥êÉÔ¡£
+メモリ不足。
.TP
.B EPERM
-¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤¬½½Ê¬¤ÊÆø¢¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£
-.SH ½àµò
+呼び出し元プロセスが十分な特権を持っていない。
+.SH 準拠
SVr4, 4.3BSD.
.BR getgroups ()
-´Ø¿ô¤Ï POSIX.1-2001 ¤Ë½àµò¤·¤Æ¤¤¤ë¡£
+関数は POSIX.1-2001 に準拠している。
.BR setgroups ()
-¤ÏÆø¢¤òɬÍפȤ¹¤ë¤¿¤á¡¢POSIX.1-2001 ¤Ë½¾¤Ã¤Æ¤¤¤Ê¤¤¡£
-.SH Ãí°Õ
-¥×¥í¥»¥¹¤Ï¡¢¼Â¸ú¥°¥ë¡¼¥× ID ¤Ë²Ã¤¨¡¢ºÇÂç
+は特権を必要とするため、POSIX.1-2001 に従っていない。
+.SH 注意
+プロセスは、実効グループ ID に加え、最大
.B NGROUPS_MAX
-¤Þ¤Ç¤ÎÊä½õ¥°¥ë¡¼¥× ID ¤ò»ý¤Ä¤³¤È¤¬¤Ç¤¤ë¡£
-Êä½õ¥°¥ë¡¼¥× ID ¤Î½¸¹ç¤Ï¿Æ¥×¥í¥»¥¹¤«¤é·Ñ¾µ¤µ¤ì¡¢
+までの補助グループ ID を持つことができる。
+補助グループ ID の集合は親プロセスから継承され、
.BR execve (2)
-¤ÎÁ°¸å¤ÇÊÝ»ý¤µ¤ì¤ë¡£
+の前後で保持される。
-Êä½õ¥°¥ë¡¼¥× ID ¤ÎºÇÂç¿ô¤Ï
+補助グループ ID の最大数は
.BR sysconf (3)
-¤ò»È¤Ã¤Æ°Ê²¼¤Î¤è¤¦¤Ë¤·¤ÆÄ´¤Ù¤ë¤³¤È¤¬¤Ç¤¤ë:
+を使って以下のようにして調べることができる:
.nf
long ngroups_max;
.fi
.BR getgroups ()
-¤ÎÊÖ¤êÃͤκÇÂçÃͤϡ¢¤³¤ÎÃͤè¤ê 1 Â礤¤Ãͤè¤êÂ礤¯¤Ê¤ë¤³¤È¤Ï¤Ê¤¤¡£
-.SH ´ØÏ¢¹àÌÜ
+の返り値の最大値は、この値より 1 大きい値より大きくなることはない。
+.SH 関連項目
.BR getgid (2),
.BR setgid (2),
.BR getgrouplist (3),