Man page - setresuid32(2)

Packages contains this manual

Available languages:

en fr pl ja ru ro de

Manual

SETRESUID

名 前
書 式
説 明
返 り 値
エ ラ ー
バ ー ジ ョ ン
準 拠
注 意
C ラ イ ブ ラ リ と カ ー ネ ル の 違 い
関 連 項 目
こ の 文 書 に つ い て

名 前

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

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

エ ラ ー

EAGAIN

こ の 呼 び 出 し で 呼 び 出 し 元 の 実 UID が 変 更 さ れ る は ず だ っ た が (つ ま り 、 ruid が 呼 び 出 し 元 の 実 UID と 一 致 し て い な い )、 必 要 な カ ー ネ ル の デ ー タ 構 造 体 の 割 り 当 て で 一 時 的 な 失 敗 が あ っ た 。

EAGAIN

ruid は 呼 び 出 し 元 の 実 UID と 一 致 し て お ら ず 、 こ の 呼 び 出 し で 実 ユ ー ザ ー ID ruid に 属 す る プ ロ セ ス 数 が 呼 び 出 し 元 の RLIMIT_NPROC リ ソ ー ス 上 限 を 超 過 す る と こ ろ で あ っ た 。 Linux 3.1 以 降 で は 、 こ の エ ラ ー は も は や 発 生 す る こ と は な い (し か し 、 堅 牢 性 が 求 め ら れ る ア プ リ ケ ー シ ョ ン で は こ の エ ラ ー を 確 認 す べ き で あ る )。 execve (2) の EAGAIN の 説 明 を 参 照 。

EINVAL

対 象 の ユ ー ザ ー ID や グ ル ー プ ID の う ち 1 つ 以 上 が こ の ユ ー ザ ー 名 前 空 間 で 有 効 で は な い 。

EPERM

The calling process is not privileged (did not have the necessary capability in its user namespace) and tried to change the IDs to values that are not permitted. For setresuid (), the necessary capability is CAP_SETUID ; for setresgid (), it is CAP_SETGID .

バ ー ジ ョ ン

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 () の ラ ッ パ ー 関 数 は カ ー ネ ル バ ー ジ ョ ン に よ る こ の 違 い を 吸 収 し て い る 。

C ラ イ ブ ラ リ と カ ー ネ ル の 違 い

At the kernel level, user IDs and group IDs are a per-thread attribute. However, POSIX requires that all threads in a process share the same credentials. The NPTL threading implementation handles the POSIX requirements by providing wrapper functions for the various system calls that change process UIDs and GIDs. These wrapper functions (including those for setresuid () and setresgid ()) employ a signal-based technique to ensure that when one thread changes credentials, all of the other threads in the process also change their credentials. For details, see nptl (7).

関 連 項 目

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

こ の 文 書 に つ い て

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