GETGROUPS

Section: Linux Programmer's Manual (2)
Updated: 2007-07-26
Index JM Home Page roff page
 

名前

getgroups, setgroups - 補助グループ ID のリストを設定/取得する  

書式

#include <sys/types.h>
#include <unistd.h>

int getgroups(int size, gid_t list[]);

#include <grp.h>

int setgroups(size_t size, const gid_t *list);

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

setgroups(): _BSD_SOURCE  

説明

getgroups()
(呼び出し元プロセスの) 最大 size までの補助グループ (supplementary group) ID を list に返す。 この関数を呼び出したプロセスの実効グループ ID が、 返されるリストに含まれるかどうかは指定されていない (つまり、アプリケーションは getegid(2) を呼び出し、その結果の値を追加・削除すべきである)。 size が 0 ならば、 list は修正されないが、そのプロセスの補助グループ ID の合計数が返される。
setgroups()
そのプロセスに補助グループ ID を設定する。 適切な特権 (Linux では CAP_SETGID ケーパビリティ (capability)) が必要である。
 

返り値

getgroups()
成功した場合は、補助グループ ID の数を返す。 エラーの場合は -1 を返し errno が適切に設定される。
setgroups()
成功した場合は 0 が返される。エラーならば -1 が返され、 errno が適切に設定される。
 

エラー

EFAULT
list が不正なアドレスである。
EINVAL
setgroups() で、 sizeNGROUPS (Linux 2.0.32 では 32) より大きい。 getgroups() の場合 size が補助グループ ID の数より小さいが 0 でない。
EPERM
呼び出し元プロセスには setgroups() を呼び出すための十分な特権がない。
 

準拠

SVr4, 4.3BSD. getgroups() 関数は POSIX.1-2001 に準拠している。 setgroups() は特権を必要とするため、POSIX.1-2001 に従っていない。  

注意

プロセスは、実効グループ ID に加え、最大 NGROUPS_MAX までの補助グループ ID を持つことができる。 補助グループ ID のセットは親プロセスから継承されるが、 setgroups() を使って変更できる。 補助グループ ID の最大数は sysconf(3) を使って以下のようにして調べることができる:

    long ngroups_max;
    ngroups_max = sysconf(_SC_NGROUPS_MAX);

getgroups() で返される値の最大値は、この方法で得られた値以下になる。  

関連項目

getgid(2), setgid(2), initgroups(3), capabilities(7)


 

Index

名前
書式
説明
返り値
エラー
準拠
注意
関連項目

This document was created by man2html, using the manual pages.
Time: 04:31:42 GMT, November 19, 2007