Manpages

名 前

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/ に 書 か れ て い る 。