Provided by: manpages-ja-dev_0.5.0.0.20210215+dfsg-1_all bug

名前

       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 が適切に設定される。

       注意:  呼び出し元が  UID  0 であっても seteuid() が失敗する場合がある。 seteuid() からのリ
       ターンが失敗かどうかの確認を省略することは重大なセキュリティ上のエラーとなる。

エラー

       EINVAL 対象のユーザー ID かグループ ID がこのユーザー名前空間では有効ではない。

       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 をチェックすべきであ
       る。

       glibc 2.0 では、 seteuid(euid)setreuid(-1, euid) と等価であり、保存 set-user-ID を変更
       するかもしれない。 glibc 2.1 では、 setresuid(-1, euid, -1) と等価であり、保存 set-user-ID
       変更しない。  同様のことが  setegid()  にも言えるが、  glibc  2.2  か  2.3   で、   実装が
       setregid(-1,  egid) から setresgid(-1, egid, -1) へ変更された点だけが違う (どの glibc バー
       ジョンで変更が行われたかは、ハードウェアアーキテクチャーによって異なる)。

       POSIX.1 では、 seteuid()  (setegid())  で、 euid (egid)  として現在の実効ユーザー  (グルー
       プ) ID と同じ値を指定可能である 必要はないとされており、いくつかの実装では euid (egid)  と
       して現在の実効ユーザー (グループ) ID と同じ値を 指定することができない。

   C ライブラリとカーネル ABI の違い
       Linux では、 seteuid() と setegid() は、それぞれ setreuid(2) と setresgid(2)  を呼び出すラ
       イブラリ関数として実装されている。

関連項目

       geteuid(2),   setresuid(2),   setreuid(2),   setuid(2),  capabilities(7),  credentials(7),
       user_namespaces(7)

この文書について

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