2016-11-17 11 views
0

私は、Linuxについて何も知らない人にも簡単に、Ubuntuマシンの初期設定とWindowsドメイン参加のためにbashスクリプトをビルドしています。私はあなたがスクリプトを使ってパスワードを渡すべきではなく、効率的でなければならないと言っている多くの人々を見つけました。スクリプトは最初に情報と資格情報を要求し、対話なしで仕事をすることができる必要があります。私はそれを渡すときに私はそれを見えるようにすることはできませんし、私はそれを安全性のない変数として格納することはできません。助言がありますか?bashで安全にパスワードを渡す

+0

パスワードを渡すコマンドは何ですか? – Gilles

答えて

2

本当にこれを行う必要がある場合は、スクリプトの初期にread -sという変数に資格情報を読み込んで、その値をプロンプトに渡すことができます。例えば:readため-sオプションは、ユーザがプロンプトに回答するときを入力押した後、通常は作成された新しい行を含めて、端末に表示されてから、ユーザの入力を防ぐため

read -p "Enter your username: " username 
read -sp "Enter your password: " password 
echo 

私は空白echoを含ま

は、次に、あなたのスクリプトの残りの部分$username$password変数を使用することができますし、資格情報は、それらがスクリプトの完了後に破壊/失われますつまり、メモリの外に保存する必要はありません。

ただし、コマンドライン引数として資格情報を取得するプログラムまたはユーティリティは、スクリプトを実行しているマシン上の他のユーザーにそれらの資格情報を表示します。例えば、私はこの方法を使用してMySQLのクエリを実行した場合、私は行うことができます:それはpsようなもので実行中のマシン上

mysql -u "${username}" -p"${password}" -e "SHOW DATABASES;" 

他のユーザーは、資格情報を見ることができる:

ps -ef | grep mysql 
... 
watrudoin 29512 29443 0 12:57 pts/4 00:00:00 mysql -u MyUserName -phunter2 -e SHOW DATABASES 

あなたはあなたがやっていることは必ずしも安全ではないことを知っておく必要がありますが、あなたはすでにそうであるようです。

+1

いくつかのコマンドでは、設定ファイルにパスワードを設定し、設定ファイルをstdinから読み取ることができます。次のような構文を使用します: 'echo" -u user \ n -p $ pw "|カール-K - ... 'であるので、目に見えなくてもそれを渡すことができます(カールの設定をそのままにして、頭の下にあり、単にプリミプルをデモンストレーションするだけです)。必要なコマンドまたはこれをサポートするものを選択しようとしている –

+0

はい、多くのコマンドやユーティリティではそう多くの場合、そのような機能が含まれています。私は「コマンドライン引数としてクレデンシャルを取るプログラムやユーティリティ」の警告を含めました。 – edaemon

+0

"私はそれを渡すときにpsで見えるようにすることはできません" – Gilles

関連する問題