Manpages

名 前

setgid − グ ル ー プ 識 別 (identity)を 設 定 す る

書 式

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

int setgid(gid_t gid);

説 明

setgid() は 呼 び 出 し 元 の プ ロ セ ス の 実 効 (effective) グ ル ー プ ID を 設 定 す る 。 も し ス ー パ ー ユ ー ザ ー に よ っ て 呼 び 出 さ れ た 場 合 は 、 実 (real) グ ル ー プ ID と 保 存 (saved) set−group−ID も 設 定 さ れ る 。

Linux に お い て 、 setgid() は _POSIX_SAVED_IDS を も っ た POSIX 版 の よ う に 実 装 さ れ て い る 。 こ れ は set−user−ID−root で な い set−group−ID プ ロ グ ラ ム に そ の グ ル ー プ の 特 権 の 全 て 落 と し 、 特 権 の 必 要 な い 仕 事 を し 、 本 来 の 実 効 グ ル ー プ ID に 安 全 な 方 法 で 再 び 戻 す こ と を 許 す 。

返 り 値

成 功 し た 場 合 は 0 が 返 さ れ る 。 エ ラ ー の 場 合 は −1 が 返 さ れ 、 errno が 適 切 に 設 定 さ れ る 。

エ ラ ー

EINVAL

gid で 指 定 さ れ た グ ル ー プ ID が こ の ユ ー ザ ー 名 前 空 間 で は 有 効 で は な い 。

EPERM

呼 び 出 し 元 の プ ロ セ ス に 権 限 が な く (CAP_SETGID ケ ー パ ビ リ テ ィ が な く )、 か つ gid が 呼 び 出 し 元 の プ ロ セ ス の 実 グ ル ー プ ID と 保 存 セ ッ ト グ ル ー プ ID の ど ち ら と も 一 致 し な い 。

準 拠

SVr4, POSIX.1−2001.

注 意

元 々 の Linux の setgid() シ ス テ ム コ ー ル は 16 ビ ッ ト の グ ル ー プ ID だ け に 対 応 し て い た 。 そ の 後 、 Linux 2.4 で 、 32 ビ ッ ト の ID に 対 応 し た setgid32() が 追 加 さ れ た 。 glibc の setgid() の ラ ッ パ ー 関 数 は カ ー ネ ル バ ー ジ ョ ン に よ る こ の 違 い を 吸 収 し て い る 。

関 連 項 目

getgid(2), setegid(2), setregid(2), capabilities(7), credentials(7), user_namespaces(7)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。