Man page - getenv(3)

Packages contains this manual

Available languages:

en fr pl ja ru ro de

Manual

GETENV

名 前
書 式
説 明
返 り 値
バ ー ジ ョ ン
属 性
準 拠
注 意
関 連 項 目
こ の 文 書 に つ い て

名 前

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 で 初 め て 登 場 し た 。

属 性

こ の 節 で 使 用 さ れ て い る 用 語 の 説 明 に つ い て は 、 attributes (7) を 参 照 。

Image grohtml-37317-1.png

準 拠

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

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