EN JA
SETRESUID(2)
SETRESUID(2) FreeBSD System Calls Manual SETRESUID(2)

名称

getresgid, getresuid, setresgid, setresuid実ユーザ ID、実効ユーザ ID と退避ユーザ ID または実グループ ID、実効グループ ID と退避グループ ID を取得するか、または設定する

ライブラリ

Standard C Library (libc, -lc)

書式

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

int
getresgid( gid_t *rgid, gid_t *egid, gid_t *sgid);

int
getresuid( uid_t *ruid, uid_t *euid, uid_t *suid);

int
setresgid( gid_t rgid, gid_t egid, gid_t sgid);

int
setresuid( uid_t ruid, uid_t euid, uid_t suid);

解説

setresuid() システムコールは、現在のプロセスの実ユーザ ID、実効ユーザ ID と退避ユーザ ID を設定します。類似の setresgid() は、実グループ ID、実効グループ ID と退避グループ ID を設定します。

特権があるプロセスは、これらの ID を任意の値に設定できます。特権がないプロセスは、新しい ID の各々が現在 ID の 1 つと一致しなければならないという点で制限されます。

引数として -1 を渡すことによって、対応する値は、変更されないままとなります。

getresgid() と getresuid() 呼び出しは、それぞれ、現在のプロセスの実グループ ID、実効グループ ID と退避グループ ID および実ユーザ ID、実効ユーザ ID と退避ユーザ ID を検索します。

戻り値

Upon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

エラー

[ EPERM]
呼び出しているプロセスが、特権がなく、現在の実 ID、現在の実効 ID でも現在の退避 ID でもない値に 1 つ以上の ID を変更しようと試みました。
[ EFAULT]
getresgid() または getresuid() に渡されたアドレスが無効でした。

規格

これらのシステムコールは、多くのプラットフォームで利用可能ではありません。それらは、GNU libc2 に対してリンクされた Linux バイナリをサポートするために FreeBSD に存在します。

歴史

これらの関数は、HP-UX ではじめて登場しました。
April 13, 2001 FreeBSD