SETREUID(2)

名前
setreuid, seteuid - 実(real) と 実効(effective)ユーザーID を設定する

書式
#include <unistd.h>

int setreuid(uid_t ruid, uid_t euid);
int seteuid(uid_t euid);

説明
setreuid は現在のプロセスの実(real)ユーザーIDと実効(effective)ユーザーID を設定する。 非特権ユーザーが実ユーザーIDを実効ユーザーIDに変化させたりできる。 Linux 1.1.37 より前は、 setreuid や seteuid が使用する保存(saved)ユーザーID パラダイムは壊れている。 1.1.37 から、保存ユーザーID からも実効ユーザーID を設定することが 可能になった。 スーパー・ユーザーのみが他の変更ができる。 実ユーザーID や実効ユーザーID に -1 を与えた場合は、 システムはその ID を変更しない。 現在では、 seteuid(euid) は機能的に setreuid(-1, euid) と等価である。 もし実ユーザーID が変更されたり、実効ユーザーID が前の実ユーザーID と 異った値に設定された場合、保存ユーザーID には新しい実効ユーザーID の値が 設定される。

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

エラー

EPERM
    現在のプロセスがスーパー・ユーザーでなく、変更が (i) 実効ユーザーID と実ユーザーID を入れ換える。 (ii) 片方の値を他方に設定する。 (iii) 実効ユーザーID に保存ユーザーID の値を設定する。 のいずれでもない。

準拠
BSD 4.3. ( setreuid 関数コールは BSD 4.2 で現れた。)

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