kazmax - Linux で自宅サーバー

setreuid - システムコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 返り値
  5. エラー
  6. 注意
  7. 準拠
  8. 関連項目

名前

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 );

説明

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) の値を設定する。

注意

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

準拠

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

関連項目