xenial (2) setreuid.2.gz

Provided by: manpages-ja-dev_0.5.0.0.20140515+dfsg-2_all bug

名前

       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 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED

説明

       setreuid()  は呼び出し元のプロセスの実 (real) ユーザー ID と 実効 (effective) ユーザー ID を設定する。

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

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

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

       実ユーザーID が設定されたり (ruid が -1 ではない)、実効ユーザー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  に与える影響については規定し
       ていない。

       元々の  Linux の setreuid() と setregid() システムコールは 16 ビットのグループ ID だけに対応していた。 そ
       の後、Linux 2.4 で、32 ビットの ID  に対応した  setreuid32()  と  setregid32()  が追加された。  glibc  の
       setreuid() と setregid() のラッパー関数は カーネルバージョンによるこの違いを吸収している。

関連項目

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

この文書について

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