Man page - seteuid(2)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

SETEUID

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

名 前

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 ():

_POSIX_C_SOURCE >= 200112L
|| /* glibc 2.19 以 前 : */ _BSD_SOURCE

説 明

seteuid () は 呼 び 出 し 元 の プ ロ セ ス の 実 効 ユ ー ザ ー ID を 設 定 す る 。 非 特 権 プ ロ セ ス の 場 合 、 実 効 ユ ー ザ ー ID に 設 定 で き る の は 、 実 ユ ー ザ ー ID・ 実 効 ユ ー ザ ー ID・ 保 存 set-user-ID の い ず れ か だ け で あ る 。

setegid () は 「 ユ ー ザ ー 」 で は な く 「 グ ル ー プ 」 に 対 し て 全 く 同 じ こ と を 行 う 。

返 り 値

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

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

エ ラ ー

EINVAL

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

EPERM

In the case of seteuid (): the calling process is not privileged (does not have the CAP_SETUID capability in its user namespace) and euid does not match the current real user ID, current effective user ID, or current saved set-user-ID.

In the case of setegid (): the calling process is not privileged (does not have the CAP_SETGID capability in its user namespace) and egid does not match the current real group ID, current effective group ID, or current saved set-group-ID.

準 拠

POSIX.1-2001, POSIX.1-2008, 4.3BSD.

注 意

実 効 ユ ー ザ ー (グ ル ー プ ) 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 ラ イ ブ ラ リ と カ ー ネ ル の 違 い

Linux で は 、 seteuid () と setegid () は 、 そ れ ぞ れ setreuid (2) と setregid (2) を 呼 び 出 す ラ イ ブ ラ リ 関 数 と し て 実 装 さ れ て い る 。

関 連 項 目

geteuid (2), setresuid (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/ に 書 か れ て い る 。