環境変数でパスワードを暗号化する方法はありますか?

環境変数でパスワードを暗号化する方法はありますか?

値をエクスポートする前にユーザー名とパスワードを設定するこのファイルがあります。

#!/bin/bash
echo -n "User:";
read user
echo -n "Password:";
read -s password

export http_proxy=http://$user:$password@$domain:$portnum

if curl -silent http://www.google.com | grep authentication_failed;
then
        echo NO CONNECT
        unset http_proxy
else
        echo OK
fi

history、、、私printenvexport -p設定した値を見ることができます。

また、私のパスワードをそのまま含む値ではなく、$passwordで暗号化された形式のパスワードを使用したいと思います。

私はopensshを使ってパスワードをソルトしたり、Perlのcrypt()を使ってハッシュを印刷したりするのに慣れていますが、私の目的には使用できません。どんな提案がありますか?

ベストアンサー1

言及した問題を再現できません。historyコマンド出力にパスワードが表示されます。

パスワードは出力に表示され、printenv期待export -pどおりに機能します。このコマンドは、文字列を入力する環境変数を表示しますhttp_proxy

環境変数は子プロセスによって自動的に継承されますが、他のプロセスでは継承されません。同じセキュリティドメイン内のプロセスにのみ表示されるので、これがなぜ大きな問題だと思うのか理解できません。

ただし、環境変数に入れるのをやめ、代わりに通常のシェル変数を使用することができます。これは子プロセスから継承されません。おそらく、カールが環境変数にアクセスしたいので、他のすべてのコマンドではなく、そのコマンドにのみ環境変数を渡すことができます。

#!/bin/bash
echo -n "User:";
read user
echo -n "Password:";
read -s password

proxy="http://$user:$password@$domain:$portnum"

if http_proxy="$proxy" curl -silent http://www.google.com | grep authentication_failed;
then
    echo NO CONNECT
else
    echo OK
fi

おすすめ記事