タグ付けされた質問 「environment-variables」

環境変数は、シェルまたは他の同様の環境で設定できる構成オプションです。シェル内から開始されたすべてのプログラムは、それらを読み取って自分自身を構成できます。

8
SSH-接続ごとに環境変数を設定する-goDaddy共有ホスト
私の問題は、サーバー上で環境変数(GIT_EXEC_PATHなど)を設定する必要があることです。すべての接続で変数が必要です(bashおよびリモートコマンドのいずれかで)。.bash_profileを使用してbashでこれらの変数を設定できましたが、リモートコマンドに問題があります。〜/ .ssh / authorized_keysに実際のrsaキーの前にコマンドを書くことができることを発見しましたが、いつもそこに書くことは望んでいません。永続的な解決策が必要です...〜/ .ssh / rcファイルはすべてのsshログインで実行されるため、そこにenv変数宣言を配置しましたが、機能しませんでした。変数はrcファイルで設定されますが、その後消えました。:S rcファイルはサブシェルで実行される可能性があります:S bashおよびコードの重複なしでリモートコマンドでこれらの変数を定義する方法はありますか? 編集: サーバーはgodaddy共有ホストであるため、質問を編集しました。したがって、サーバーには一意の構成があります。/ etc / ssh / sshd_configおよび/ etc / ssh / ssh_configファイルは空です。これらのファイルにはコメントがあります。興味があれば、ここにコピーできます。 〜/ .bash_profileは(bash接続のみによって)ソースされます。 〜/ .bashrcはソースされません。 〜/ .profileが取得されることはありません。 〜/ .ssh / environmentは決してソースされません。 〜/ .ssh / rcは(bashとremoteの両方によって)ソースされますが、変数が消えるためサブシェルで呼び出されると思います。 〜/ .ssh / authorized_keysは毎回ソースされますが、すべてのrsaキーの前にコマンドを作成する必要があります(したがって、これで構成する必要はありません)。 概要: (.bash_profileを使用して)bashを適切に構成できますが、リモート呼び出しを構成できません。それが問題です。bashコマンドとリモートコマンドの両方をソースとするファイルを探しています。 例えば: GIT_EXEC_PATH env変数が設定されているため、git-upload-packコマンドはexeファイルを検出しますが、リモートで「git clone user@domain.com:myrepo local / myrepo」を実行すると、サーバーはそのコマンドを検出しません。設定されていません。 編集2: …



2
「AcceptEnv *」が安全でないと見なされるのはなぜですか?
では/etc/ssh/sshd_config、と呼ばれるオプションがありAcceptEnv、SSHクライアントは、環境変数を送信することができます。多数の環境変数を送信できる必要があります。これらはクライアントからのすべての接続で変更されるため、サーバー上のログインスクリプトにそれらを配置することはより困難になります。 私はそれ"AcceptEnv *"が安全でないと読んだ。配置するように設定されているすべての環境変数のリストを取得しようとする前に、その理由を理解したいと思います。 なぜ安全でないと考えられますか?例を入手できますか?

1
sshのPermitUserEnvironmentのセキュリティリスク
env変数をsshシェルに渡すためのの使用PermitUserEnvironmentとファイルに関するかなりの数の記事を読みました~/.ssh/environment。公式のsshdドキュメントと他のいくつかのリソースは、これを行うことによるセキュリティ上のリスクを示唆しています。 環境処理を有効にすると、ユーザーはLD_PRELOADなどのメカニズムを使用して、一部の構成でアクセス制限をバイパスできます。 アクティベーションのセキュリティ上の問題はPermitUserEnvironment何ですか?これらの環境変数でDB接続の詳細を保持しようとしていましたが、これはお勧めですか?

4
管理者以外のコマンドプロンプトに対してPATHの環境変数が展開されていませんか?
コマンドプロンプトが通常のユーザーによって実行されたときに、環境変数の展開に失敗するWindows 7マシンがあります%PATH%。代わりにコマンドプロンプトが管理者として実行される場合(右クリック、管理者として実行)、%PATH%適切に展開されます。 具体的に%PATH%はcmd.exe、ユーザーとして実行する場合(で表示set path)は次のとおりです。 Path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\Wbem;%SYSTEMROOT\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft Windows Performance Toolkit\ ...一方%PATH%、cmd.exe管理者として実行する場合は次のとおりです。 Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\Wbem;%SYSTEMROOT\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft Windows Performance Toolkit\ 新しいユーザーとしてログインして新しいプロファイルを作成しようとしましたが、そのプロファイルでも問題が解決しません。HKEY_CURRENT_USER\Environment\PATH存在せず、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path[コンピューターのプロパティ]-> [環境変数]で定義されたシステム全体のパスと一致します。 誰がこれが何であるか、または私がどこで見ることができるかについてのアイデアを持っていますか?


2
リクエスト文字列に基づいてLDAPでApacheを動的に認証しますか?
mod_authnz_ldapのRequire ldap-groupディレクティブへの入力としてリクエストURIの一部を使用することは可能ですか? すべてのhttp://testserver.com/projects/の下にあるさまざまなプロジェクトディレクトリへのアクセスを動的にチェックして、アクセスしているユーザー/projects/abcがのメンバーシップをチェックされるようにしていますcn=abc,ou=groups,dc=test。理想的には、プロジェクトごとに個別のLocationディレクティブを作成せずにこれを実行したいと考えています。何百ものプロジェクトが存在する可能性があるためです。 私はこれを思いつきましたが、これは一般的な概念を示していますが、機能しません(project_nameは実際の変数の内容を取得しません)。 <Location /projects> SetEnvIf Request_URI "/projects/([-a-z0-9A-Z_]+)/" project_name=$1 AuthType Basic AuthBasicProvider ldap AuthName "Restricted Resource - SVN (LDAP)" AuthLDAPURL "ldap://127.0.0.1:389/dc=test?uid" AuthLDAPGroupAttributeIsDN off AuthLDAPGroupAttribute memberUid Require ldap-group cn=%{project_name},ou=groups,dc=test </Location> 助けて?

3
バッチファイルでグローバルPATH環境を設定するにはどうすればよいですか?
私たちの環境のグループポリシーは、ログオンするたびにPATH変数を上書きし、「非標準」のコンピューターを実行すると、完全に間違ったものになります(C:\ WindowsとC:\ WINNT、見つからないディレクトリなど)。現在、ログオンするたびに手動で変更していますが、面倒になり始めています。 SETコマンドを使用してバッチファイルのPATH変数を変更すると、ローカルスコープしか持たないため、変更はバッチファイルのコマンドにのみ適用されます。 set PATH=C:\WINNT;C:\WINNT\System32 set PATH このバッチファイルは新しいパスを出力しますが、set PATH後でコマンドラインで実行した場合でも、元のパスのままです。 バッチファイルでグローバル PATH環境を設定するにはどうすればよいですか?または、私が使用できる別のテクニックはありますか?

2
start-stop-daemonは環境変数を使用できますか?
Wineで実行しているWindowsアプリをデーモン化し、pidをで作成する必要があります/var/run。実行するにはX11セッションが必要なので、実行中のユーザーの環境で$ DISPLAY変数が設定されていることを確認する必要があります。 特定のディスプレイでX11セッションが既に実行されていると仮定すると、/etc/init.dスクリプトのstart-stop-daemon行は次のようになります。 start-stop-daemon --start --pidfile /var/run/wine-app.pid -m -c myuser -g mygroup -k 002 --exec /home/myuser/.wine/drive_c/Program\ Files/wine-app.exe 残念ながら、Ubuntu 8.04の私のバージョンのstart-stop-daemonには、-e環境変数を設定するオプションがありません。次のように、コマンドの前に$ DISPLAYを設定するだけでよいことがわかります。 VAR1="Value" start-stop-daemon ... しかし、それは機能しません。-c {user}特定のユーザーとして実行するオプションを使用しているので、環境スイッチがあり、VAR1が失われていると思います。実行中のユーザー.profileおよび/またはからDISPLAYをエクスポートしようとしました.bashrcが、どちらも機能しません。 これを行う別の方法はありますか?これは可能ですか?私は何かを見落としているか?

4
/ etc / environment内の環境変数、値にシャープ記号(ハッシュ)記号
Ubuntu 12.04では、次のように環境変数が定義されています/etc/environment。 FOO="value_before#value_after" サーバーにsshして値を確認すると、次のようになります。 $ env | grep FOO FOO=value_before 私はそれを#コメントとして扱い、それを取り除いていると思いますが、これはうまくいきます: $ . /etc/environment $ export FOO $ env | grep FOO FOO=value_before#value_after 私は#このようなエスケープを試みました: FOO="value_before\#value_after" しかし、それはうまくいきません、代わりに私はこれを取得します: FOO=value_before\ ハッシュを値の一部のように扱う方法についてのアイデアはありますか?どんな助けでも素晴らしいでしょう。 /etc/environmentファイルで試した値: FOO='value_before#value_after' FOO="value_before#value_after" FOO='"value_before#value_after"' FOO="value_before\#value_after" FOO='value_before\#value_after' 上記の他のさまざまな組み合わせ。これらの多くは、通常シェルで設定するだけで機能します。しかし、それらは/etc/environmentファイルで機能していないようです。

4
Apache 2:SetEnvIf「IP範囲」
私のApache構成で、訪問者が特定のIP範囲から来ていることがわかった場合は、環境変数を設定します。現在私はこのようにしています: SetEnvIfNoCase Remote_Addr "^194\.8\.7[45]\." banned=spammer-ip SetEnvIfNoCase Remote_Addr "^212\.156\.170\." banned=spammer-ip 私が好むのは次のようなものです: SetEnvIfIpRange 194.8.74.0/23 banned=spammer-ip SetEnvIfIpRange 212.156.170.0/24 banned=spammer-ip ... IPアドレスを文字列に変換してから正規表現を実行することは、リソースを無駄にすることになると思います。 私はできる Deny From 194.8.74.0/23 ...しかし、403エラーページで確認できる変数が得られません-アクセスが拒否された理由を見つけるために。 私が見逃す可能性のある提案はありますか?「IPアドレス範囲」に基づいて環境変数を設定できるApache2 MODはありますか?

3
nginxが提供する静的ファイル内でnginx環境変数を使用できますか?
nginx設定で環境変数を使用し、nginxが静的ファイル(html、js、css-たとえばAngularJsアプリ)のみを提供するように構成されている場合、nginxが提供するJSファイル内で環境変数を使用する方法はありますか? ?または、これを実行して非静的サーバー(io.js、phpなど)を実行する唯一の方法です。 ところで、nginxの設定では、環境変数をネイティブに使用することはできません。 私は環境について話すときnginxの設定Iにvarsはこの記事のように意味:どのように私はNginx.confで環境変数を使用することができます彼らが使用env APP_WEB_1_PORT_5000_TCP_ADDR;し、$ENV{"APP_WEB_1_PORT_5000_TCP_ADDR"}; ユースケースを正確に説明してください 私の特定の使用例は、Dockerコンテナーにnginxを利用したAngularJSアプリがあることです。このアプリは、別のシステムで実行されているAPIを完全に使用する「単一ページアプリケーション」です。アプリには、Google-Analtyicsコードなどの異なる設定があるため、現在、本番とステージングの間で別のDockerコンテナーを実行しています。この環境固有のデータはconfig.jsファイルに保存され、値は現在ハードコーディングされています。gitのmasterブランチの1つの値とブランチの異なる値ですstaging。制作とステージングの両方で同じコンテナを使用できるように、デザインを変更したいと考えています。私は(それを実行したときに容器の中にENVのVARを渡したいdocker run -e GACODE=UA-12345-6 ...介して、()とENVのVARを使用nginxの持ちenv GACODE;と$ENV{"GACODE"}なりますconfig.jsファイルでは、ハードコーディングするのではなく、渡されたGoogleAnaltyicsコードを使用できます。これが可能かどうかはわかりません(したがって、質問;))。nginxのみを使用すると、コンテナーが単一プロセスになりますが、io.jsを使用する必要がある場合は、複数のリンクされたコンテナーが必要であり、より多くの可動部分がより複雑になります)。

4
VARをサブシェルから親シェルにエクスポートする方法
Kornシェルスクリプトがあります #!/bin/ksh # set the right ENV case $INPUT in abc) export BIN=${ABC_BIN} ;; def) export BIN=${DEF_BIN} ;; *) export BIN=${BASE_BIN} ;; esac # exit 0 <- bad idea for sourcing the file 現在、これらのVARはサブシェルでのみエクスポートされていますが、親シェルでも設定したいので、プロンプトでこれらの変数が正しく設定されています。 私は知っています . .myscript.sh しかし、「調達」せずにそれを行う方法はありますか?ユーザーが「ソース」を忘れることが多いため。 EDIT1:「exit 0 "部分を削除する-これは私が最初に考えることなくタイプしただけでした EDIT2:なぜ私はこれが必要なのかについての詳細を追加します:開発者は(簡単にするために)2つのアプリのコードを記述します:ABCとDEF。すべてのアプリは、別々のユーザーusrabcとusrdefによって運用環境で実行されているため、アプリ固有の$ BIN、$ CFG、$ ORA_HOMEなどをセットアップしています。 そう ABCの$ BIN = / …

1
Nginxでサーバー固有のENV値をどのように設定しますか?
環境変数を使用してデータベース接続などを設定するプロジェクトを開始しています。(人々は不注意でそれらを上書きするので、彼らは設定ファイルを使いたくありませんでした)。 とにかく、私はnginxを使用していて、それはenvをサポートしていますが、十分にサポートしているようには見えません。サーバーブロックごとに env値を設定することはできません。つまり、これは機能しません。 server { listen 80; server_name domain; env FOO = "bar"; } これを行う必要があります: env FOO = "bar"; http { server { listen 80; server_name domain; } } つまり、vhost固有の値を設定することはできません。したがって、各サイトのvhost構成全体を作成し、値を正しく設定するために、現時点で必要なものだけをアクティブにする必要があります。 これを回避する方法はありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.