SETGID(2)

名前
setgid - グループ識別(identity)を設定する

書式
#include <unistd.h>

int setgid(gid_t gid)

説明
setgid は現在のプロセスの実効(effective)グループID を設定する。 もしスーパー・ユーザーによって呼び出された場合は、 実(real)グループID と保存(saved)グループID も設定される。 Linux において、 setgid は _POSIX_SAVED_IDS をもった POSIX 版のように実装されている。 これは(ルート以外の) setgid プログラムにそのグループの特権の 全て落とし、特権の必要ない仕事をし、本来の実効グループID に 安全な方法で再び戻すことを許す。 ユーザーがルート(root)またはプログラムが setgid ルートならば、 特別の注意が払われる。 setgid 関数は呼び出し者の実効グループID をチェックし、それがスーパー・ユーザーならば、 プロセスに関連する全ての グループID に gid を設定する。 これが行なわれた後にはプログラムが再びルートの特権を得ることはできない。 このように、setgid-root プログラムは一時的にルート特権を落とし、 ルート・グループでないように振舞うことができ、それから setgid を使って再びルート特権を得ることができないようにする。 (POSIXでない、BSD) コールは setegid で行なうことができる。

返り値
成功した場合はゼロが返される。エラーの場合は -1 が返され、 errno が適切に設定される。

エラー

EPERM
    ユーザーがスーパー・ユーザー(super-user)でなく、 gid が呼び出したプロセスの実効グループID または保存グループID と一致しない。

準拠
SVr4, SVID.

関連項目
getgid(2), setregid(2), setegid(2)