SETREUID(2)

名称
setreuid - 実ユーザ ID と実効ユーザ ID を設定する

ライブラリ
libc

書式
<unistd.h> int setreuid(uid_t ruid, uid_t euid)

解説
現在のプロセスの実ユーザ ID と実効ユーザ ID が引数に従って設定されます。 ruid または euid が -1 の場合、現在の UID が指定されたことになります。 特権のないユーザは、実ユーザ ID をその実効ユーザ ID に、 または実効ユーザ ID をその実ユーザ ID に変更できます。 スーパユーザだけがその他の変更を行えます。

実ユーザ ID が変更された場合 (つまり ruid が -1 ではない)、 もしくは実効ユーザ ID がその実ユーザ ID 以外へと変更された場合、 退避ユーザ ID はその実効ユーザ ID へ設定されます。

setreuid() システムコールはユーザ ID 設定プログラム内で実ユーザ ID と実効ユーザ ID を スワップし、ユーザ ID 設定の値を一時的に放棄するために使われてきました。 この目的は、現在では setuid(2) システムコールを使用するとより良く達成できます。

実ユーザ ID と実効ユーザ ID を同じ値に設定するときは、標準の setuid() システムコールを使用するようにしてください。

戻り値

エラー

[EPERM]
    現在のプロセスがスーパユーザでなく、実効ユーザ ID を実ユーザ ID に 変更する以外の変更が指定されました。

関連項目
getuid(2), issetugid(2), seteuid(2), setuid(2)

歴史
setreuid() システムコールは 4.2BSD で登場しました。