getgroups

Autres langues

Langue: ja

Version: 2004-05-27 (openSuse - 09/10/07)

Section: 2 (Appels système)

̾Á°

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);

½ñ¼°

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() ¤Ç¡¢ size ¤¬ NGROUPS (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() ¤ÇÊÖ¤µ¤ì¤ëÃͤκÇÂçÃͤϡ¢¤³¤ÎÊýË¡¤ÇÆÀ¤é¤ì¤¿ÃͰʲ¼¤Ë¤Ê¤ë¡£

setgroups() ¤Î¥×¥í¥È¥¿¥¤¥×¤Ï _BSD_SOURCE ¤òÄêµÁ¤·¤¿¾ì¹ç¤Ë¤Î¤ßÍ­¸ú¤Ë¤Ê¤ë¡£

´ØÏ¢¹àÌÜ

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