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

名前

       setresuid, setresgid - ユーザやグループの 実、実効、保存 ID を設定する

書式

       #define _GNU_SOURCE /* feature_test_macros(7) 参照 */
       #include <unistd.h>

       int setresuid(uid_t ruid, uid_t euid, uid_t suid);
       int setresgid(gid_t rgid, gid_t egid, gid_t sgid);

説明

       setresuid()   は呼び出し元のプロセスの実  (real) ユーザーID、実効 (effective) ユーザーID、
       保存 set-user-ID を設定する。

       非特権ユーザーのプロセスは、その実 UID、実効 UID、保存 set-user-ID を、 現在の実 UID、現在
       の実効 UID、現在の保存 set-user-ID のどれかに変更することができる:

       特権プロセス  (Linux  では  CAP_SETUID ケーパビリティ (capability) を持つ プロセス) は、実
       UID、実効 UID、保存 set-user-ID を任意の値に設定できる。

       引き数のどれかが -1 の場合はその値は変更されずに残される。

       実 UID、実効 UID、保存 set-user-ID  にどんな変更が行われたかに関わらず、  ファイルシステム
       UID は常に実効 UID (可能であれば変更後の新しい実効 UID)  と同じ値に設定される。

       全く同じように、  setresgid()  は呼び出し元のプロセスの実 GID、実効 GID、保存 set-group-ID
       を設定する (さらにファイルシステム GID を実効 GID と同じ値に修正する)。 非特権プロセスは同
       様の制限を受ける。

返り値

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

エラー

       EAGAIN uid が現在のユーザー ID と違う値で、 この呼び出しにより ユーザー ID が リソース上限
              RLIMIT_NPROC を超えてしまう。

       EPERM  呼び出したプロセスが特権を持たないのに (CAP_SETUID  ケーパビリティを持たないのに)、
              ID を許されていない値に変更しようとした。

バージョン

       Linux ではバージョン 2.1.44 より利用可能になった。

準拠

       これらのコールは非標準である。 HP-UX や BSD 系のいくつかにも存在する。

注意

       HP-UX や FreeBSD では <unistd.h> にプロトタイプが存在する。 Linux では、glibc 2.3.2 以降で
       プロトタイプが提供されている。

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

関連項目

       getresuid(2),     getuid(2),    setfsgid(2),    setfsuid(2),    setreuid(2),    setuid(2),
       capabilities(7), credentials(7)

この文書について

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