SETREUID
Section: Linux Programmer's Manual (2)
Updated: 2009-10-17
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 にしか設定できない。
非特権ユーザーは、実ユーザー ID を実ユーザー ID または
実効ユーザー ID にしか設定できない。
実ユーザー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) から可能になった。
POSIX.1 では、非特権プロセスに対して Linux 上で認められている ID の変更の
全パターンを規定しているわけではない。
setreuid()
では、実効ユーザ ID を実ユーザ ID もしくは保存 set-user-ID と
同じ値にすることができるが、
非特権プロセスが実ユーザ ID を実ユーザ ID、実効ユーザ ID、
保存 set-user-ID のどの値にも設定できるかは規定されていない。
setregid()
では、実グループ ID を保存 set-group-ID と同じ値に変更でき、
実効グループ ID を実グループ ID や保存 set-group-ID と同じ値に変更できる。
どのような ID の変更が認められているかの正確な詳細は
実装ごとに異なる。
POSIX.1 では、これらのシステムコールが保存 set-user-ID や
保存 set-group-ID に与える影響については規定していない。
関連項目
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: 03:26:54 GMT, April 25, 2010