Manpages

名 前

getenv, secure_getenv − 環 境 変 数 を 得 る

書 式

#include <stdlib.h>

char *getenv(const char *name);

char *secure_getenv(const char *name);

glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 (feature_test_macros(7) 参 照 ):

secure_getenv(): _GNU_SOURCE

説 明

関 数 getenv() は 、 環 境 リ ス ト か ら 名 前 が name の 環 境 変 数 を 検 索 し 、 対 応 す る value 文 字 列 へ の ポ イ ン タ ー を 返 す 。

GNU 固 有 の secure_getenv() 関 数 は getenv() と 同 様 だ が 、 "secure execution" (「 安 全 な 実 行 」 ) が 必 要 な 場 合 に は NULL を 返 す 点 が 異 な る 。 "secure execution" が 必 要 と な る の は 、 呼 び 出 し 元 プ ロ セ ス に よ り 実 行 さ れ る プ ロ グ ラ ム が ロ ー ド さ れ る 際 に 、 以 下 の 条 件 の い ず れ か 一 つ が 成 立 す る 場 合 で あ る 。

* プ ロ セ ス の 実 効 ユ ー ザ ー

ID が プ ロ セ ス の 実 ユ ー ザ ー ID と 一 致 し な い 場

合 、 ま た は プ ロ セ ス の 実 効 グ ル ー プ ID が プ ロ セ ス の 実 グ ル ー プ ID と 一 致 し な い 場 合 (通 常 、 こ の 状 況 に な る の は 、 set−user−ID プ ロ グ ラ ム か set−group−ID プ ロ グ ラ ム を 実 行 し た 場 合 で あ る )。

* 実 行 フ ァ イ ル で 実 効 ケ ー パ ビ リ テ ィ ビ ッ ト が セ ッ ト さ れ て い る 場 合 。

* プ ロ セ ス の 許 可 ケ ー パ ビ リ テ ィ セ ッ ト が 空 で な い 場 合 。

Linux セ キ ュ リ テ ィ モ ジ ュ ー ル に よ り 要 求 さ れ た 場 合 に も "secure execution" は 必 要 と な る 。

secure_getenv() 関 数 は 、 set−user−ID プ ロ グ ラ ム や set−group−ID プ ロ グ ラ ム が 実 行 環 境 を 偶 然 信 用 し て し ま っ た 場 合 に 起 こ り 得 る 脆 弱 性 を 、 汎 用 ラ イ ブ ラ リ で 回 避 す る た め に 使 う こ と を 意 図 し て 作 ら れ た 。

返 り 値

関 数 getenv() は 、 環 境 に お け る 値 value へ の ポ イ ン タ ー を 返 す 。 name に マ ッ チ す る 環 境 変 数 が 存 在 し な い と き に は NULL を 返 す 。

バ ー ジ ョ ン

secure_getenv() は glibc 2.17 で 初 め て 登 場 し た 。

準 拠

getenv(): SVr4, POSIX.1−2001, 4.3BSD, C89, C99.

secure_getenv() は GNU に よ る 拡 張 で あ る 。

注 意

環 境 リ ス ト の 文 字 列 は name=value と い う 形 式 を し て い る 。 通 常 の 実 装 で は 、 getenv() は 環 境 リ ス ト 内 の 文 字 列 へ の ポ イ ン タ ー を 返 す 。 呼 び 出 し 元 は こ の 文 字 列 を 変 更 し な い よ う に 注 意 し な け れ ば な ら な い 。 こ の 文 字 列 を 変 更 す る と 、 そ の プ ロ セ ス の 環 境 を 変 化 さ せ る こ と に な る か ら で あ る 。

getenv() の 実 装 は リ エ ン ト ラ ン ト (再 入 可 能 ) で あ る こ と を 要 求 さ れ て い な い 。 getenv() の 返 り 値 に よ り 参 照 さ れ る 文 字 列 は 静 的 に 割 り 当 て ら れ て も よ く 、 文 字 列 の 内 容 は 後 続 の getenv(), putenv(3), setenv(3), unsetenv(3) の 呼 び 出 し に よ り 変 更 さ れ る こ と が あ る 。

secure_getenv() の "secure execution" モ ー ド は 、 カ ー ネ ル か ら ユ ー ザ ー 空 間 に 渡 さ れ る 補 助 ベ ク ト ル (auxiliary vector) の AT_SECURE フ ラ グ に よ り 制 御 さ れ る 。

関 連 項 目

clearenv(3), getauxval(3), putenv(3), setenv(3), unsetenv(3), capabilities(7), environ(7)

こ の 文 書 に つ い て

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