Provided by: manpages-ja-dev_0.5.0.0.20180315+dfsg-1_all bug

名前

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