SETEUID(2)

名前
seteuid, setegid - 実効ユーザー ID や 実効グループ ID を設定する

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

int seteuid(uid_t euid);
int setegid(gid_t egid);

glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):

seteuid(), setegid():
    _BSD_SOURCE || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600

説明
seteuid() は呼び出し元のプロセスの実効ユーザー ID を設定する。 非特権ユーザーのプロセスの場合、実効ユーザー ID に設定できるのは、 実ユーザー ID・実効ユーザー ID・保存 set-user-ID のいずれかだけである。 setegid() は「ユーザー」ではなく「グループ」に対して全く同じことを行う。

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

エラー

EPERM
    呼び出し元のプロセスに特権がなく、 euid (egid) が実ユーザー (グループ) ID、または実効ユーザー (グループ) ID、 保存 set-user-ID (保存 set-group-ID) のいずれでもではない (Linux においては、 seteuid() では CAP_SETUID ケーパビリティ (capability) が、 setegid() では CAP_SETGID ケーパビリティがない場合に、特権がないと判断される)。

準拠
4.3BSD, POSIX.1-2001.

注意
実効ユーザー (グループ) ID を保存 set-user-ID (保存 set-group-ID) に 設定できるのは、Linux 1.1.37 (1.1.38) 以降である。 全てのシステムにおいて _POSIX_SAVED_IDS をチェックすべきである。

Under libc4, libc5 and glibc 2.0 seteuid(euid) is equivalent to setreuid(-1, euid) and hence may change the saved set-user-ID. Under glibc 2.1 and later it is equivalent to setresuid(-1, euid, -1) and hence does not change the saved set-user-ID. Analogous remarks hold for setegid(), with the difference that the change in implementation from setregid(-1, egid) to setresgid(-1, egid, -1) occurred in glibc 2.2 or 2.3 (dependeing on the hardware architecture). POSIX.1 では、 seteuid() (setegid()) で、 euid (egid) として現在の実効ユーザ (グループ) ID と同じ値を指定可能である 必要はないとされており、いくつかの実装では euid (egid) として現在の実効ユーザ (グループ) ID と同じ値を 指定することができない。

関連項目
geteuid(2), setresuid(2), setreuid(2), setuid(2), capabilities(7), credentials(7)

この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.51 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。