2017-07-03 19 views
1

私はLinux上でシェルとApacheで利用できる環境変数を設定しようとしています。apache envvarsでシステム全体の環境変数を指定するのは安全ですか?

私は/etc/environmentに変数を追加するので、ファイルはこのようなものになります。やった後

. /etc/environment 
export MY_VAR=$MY_VAR 

:アパッチで利用可能なMY_VARを持っている

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" 
MY_VAR="foo" 

を、これは私が/etc/apache2/envvarsに追加するものです多くの研究がこれを唯一の方法として、同じ環境変数をシステム全体とApacheで2回宣言することなく得ることができました。

このアプローチでセキュリティ上の問題はありますか?

答えて

0

私自身の問題を解決することができました。私は/etc/environmentからMY_VARを削除し、このようになり、別のファイル/etc/profile.d/apache.sh作成:

export MY_VAR="foo" 

をそれから私はそうのような/etc/apache2/envvarsでこのファイルをソース化:

. /etc/profile.d/apache.sh 
  • apache.shに設定された任意の変数が使用可能なシステムでありますApacheだけでなく、Apacheでも
  • apache.shはスクリプトであるため、/etc/environmentと異なり、変数はhav eは不要な変数を使用すると、システム全体の利用可能だけでなく、Apacheのようにしたいどのような変数はApache
  • に魔法のように渡されないので、何のセキュリティ上のリスクがありませんenvvars
  • で再び「輸出」EDになるように、あなたはapache.shに追加しますあなたはApacheのみでそれをしたい場合は、その後、あなたは、スクリプトを調達する際、キーワードexportを使用する必要はありませんが、一般的にenvvars
0

でそれを追加します。

そのため、余分なスクリプト(すなわちmy_apacheenv.sh)このフォーマットが必要です。

VARIABLE_A="some hardcoded value" 
VARIABLE_B="${DYNAMIC_ONE}" 
VARIABLE_C="${APACHE_HOSTNAME}" 

をし、それが実行可能(chmod +x /path/to/my_apacheenv.sh)としてマークされていることを確認してください。

ファイル/etc/apache2/envvarsが含まれている必要があります

. /path/to/my_apacheenv.sh 

その後、セッションや環境変数としてのいずれか、任意の通常の方法でDYNAMIC_ONEまたはAPACHE_HOSTNAMEの値を定義することができます。私にとって

、ドッキングウィンドウ・コンファイルを組み合わせて使用​​する場合、それはかなりうまく機能:

version: "3" 
services: 
    single-apache-php: 
    build: ./../cicd/apache 
    environment: 
     APACHE_HOSTNAME: "my.dynamic.hostname.com" 
関連する問題