SETUID(2)

名称
setuid, seteuid, setgid, setegid, - ユーザ ID とグループ ID を設定する

ライブラリ
libc

書式
<sys/types.h> <unistd.h> int setuid(uid_t uid) int seteuid(uid_t euid) int setgid(gid_t gid) int setegid(gid_t egid)

解説
setuid() 関数は、現在のプロセスの実ユーザ ID と実効ユーザ ID と 退避グループ ID を指定した値に設定します。 setuid() 関数が許容されるのは、指定の ID がプロセスの実ユーザ ID または実効ユーザ ID に等しい場合、 または実効ユーザ ID がスーパユーザのものと等しい場合です。

setgid() 関数は、現在のプロセスの実グループ ID と実効グループ ID と 退避グループ ID を指定した値に設定します。 setgid() 関数が許容されるのは、指定の ID がプロセスの実グループ ID または実効グループ ID に等しい場合、 または実効ユーザ ID がスーパユーザのものと等しい場合です。

seteuid() 関数 (setegid()) は、現在のプロセスの実効ユーザ (グループ ID) を設定します。 実効ユーザ ID は実ユーザ ID または退避ユーザ ID ( intro(2) と execve(2) を参照 ) の値に設定できます。これを利用し、 set-user-ID 実行可能ファイルの実効ユーザ ID を実ユーザ ID に切り替えた後に、 set-user-ID 値に戻ることで、元の権限を得ることができます。 同じように、実効グループ ID は、 実グループ ID または退避ユーザ ID の値に設定できます。

戻り値

エラー
本関数は次の場合に失敗します:

[EPERM]
    ユーザがスーパユーザでない場合、または指定された uid がその実 ID、 実効 ID、または退避 ID でない場合。

関連項目
getgid(2), getuid(2), issetugid(2), setregid(2), setreuid(2)

規格
setuid() 関数と setgid() 関数は p1003.1-90 仕様と互換性があります。ただし、 _POSIX_SAVED_IDS は付録 B.4.2.2 の許可された拡張で定義されていません。 seteuid() 関数と setegid() 関数は、 _POSIX_SAVED_IDS の POSIX コンセプトを基礎にして拡張してあり、規格の将来の改定用に提案されて います。

歴史
setuid() 関数呼び出しと setgid() 関数呼び出しは AT&T UNIX で登場しました。