SETREUID

Section: Linux Programmer's Manual (2)
Updated: 2007-07-26
Index JM Home Page roff page
 

名前

setreuid, setregid - 実 (real) と実効 (effective) ユーザー (グループ) ID を設定する  

書式

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

int setreuid(uid_t ruid, uid_t euid);
int setregid(gid_t rgid, gid_t egid);

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

setreuid(), setregid(): _BSD_SOURCE || _XOPEN_SOURCE >= 500  

説明

setreuid() はカレントプロセスの実 (real) ユーザー ID と 実効 (effective) ユーザー ID を設定する。

実ユーザー ID や実効ユーザー ID に -1 を与えた場合、 システムはその ID を変更しない。

非特権プロセスは実効ユーザー ID を実ユーザー ID または実効ユーザー ID または 保存 set-user-ID にしか設定できない。

POSIX: 非特権プロセスが実ユーザー ID を実ユーザー ID または 実効ユーザー ID または保存実効ユーザーID に設定できるか否かは、 指定されていない。

Linux: 非特権ユーザーは実ユーザー ID を実ユーザー ID または 実効ユーザー ID にしか設定できない。

Linux: 実ユーザーID が設定されたり、実効ユーザーID が前の実ユーザーID と 異った値に設定された場合、保存 set-user-ID には新しい実効ユーザーID の値が 設定される。

これと全く同様に、 setregid() はカレントプロセスの実グループ ID と実効グループ ID を設定し、 上記の説明で「ユーザー」を「グループ」に読み替えたことが成り立つ。  

返り値

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

エラー

EPERM
現在のプロセスに特権がなく (Linux では setreuid() の場合に CAP_SETUID ケーパビリティ (capability) がなく、 setregid() の場合に CAP_SETGID ケーパビリティがない)、 以下のいずれでもない変更が指定された: (i) 実効ユーザー (グループ) ID と実ユーザー (グループ) ID を入れ換える。 (ii) 片方の値を他方に設定する。 (iii) 実効ユーザー (グループ) ID に保存 set-user-ID (保存 set-group-ID) の値を設定する。
 

準拠

POSIX.1-2001, 4.3BSD (setreuid() と setregid() 関数コールは 4.2BSD で登場した)。  

注意

実効ユーザー (グループ) ID を保存ユーザー (グループ) ID に 設定することが、Linux 1.1.37 (1.1.38) から可能になった。  

関連項目

getgid(2), getuid(2), seteuid(2), setgid(2), setresuid(2), setuid(2), capabilities(7)


 

Index

名前
書式
説明
返り値
エラー
準拠
注意
関連項目

This document was created by man2html, using the manual pages.
Time: 04:32:02 GMT, November 19, 2007