EN JA
SETEUID(2)
SETEUID(2) Linux Programmer's Manual 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/ に書かれている。
2012-07-02 Linux