シェルスクリプト:暗号化されたパスワードを復号化して変数に保存します。

シェルスクリプト:暗号化されたパスワードを復号化して変数に保存します。

mysqlのパスワードを含む "credential.txt"ファイルがあります。このテキストファイルを呼び出し、ここでパスワードを検索する別のスクリプトがあります。セキュリティ上の理由から、パスワードを直接保存したくありません。この目的のために、Triple-DES Cipher暗号化を使用してファイルを暗号化しました。

openssl des3 -salt -in credential.txt -out credential.des3

引用:https://linuxtidbits.wordpress.com/2009/01/12/encryptingdecrypting-a-file-easily-with-a- Couple-bash-scripts/

これで、シェルスクリプトでcredential.des3で暗号化されたパスワードを取得して変数に保存しようとしました。引用記事では、ファイルを復号化し、復号化されたパスワードを別のファイルに保存する方法を示します。

openssl des3 -d -salt -in credential.des3 -out unencrypted-data.file

問題は、復号化されたファイルをシステムに保存したくないことです。復号化された出力をキャプチャしたいです。私のシェルスクリプトはcronjobを使用して自動的に実行されるため、ユーザーにパスワードを指定するように要求することはできません。パスワードを復号化して次の変数に保存する方法はありますか?

var = $(decrypted_pass)

シェルスクリプトで必要な場合に使用します。

次のコマンドを試しましたが、機能しません。

var=$(openssl das3 -salt -in credential.des3)

ベストアンサー1

使用できる

pass=$(openssl des3 -d -salt -in credential.des3)

(指定された出力ファイルなし)

しかし、ここで問題はcron。環境変数を使用して一部のデータをスクリプトに渡すことができますが、ファイルシステム(ほとんどのファイル)に保存せずにcronパスワードを渡す簡単な方法はありません。croncrontab

永続ストレージへのプレーンテキストパスワードアクセスを防ぐには、tmpfsファイルシステム(Linux)に保存するように設定できます。mount -t tmpfs tmpfs /path/to/mount/pointまたは、対応する項目を使用してインストールできますfstab。システムですでに/tmpusingを使用している可能性がありますtmpfs

別のオプションは、プレーンテキストパスワードを保存するスクリプトを継続的に実行し、sleep適切な時間に実際の操作を実行することです。ただし、この場合、スクリプトがクラッシュしても自動的に再起動されません。とにかく再起動するには、パスワードを手動で入力する必要があります。

とにかく、メモリの秘密はスワップのために書き込まれます(存在する場合)。 (このような理由で暗号通貨取引所を利用する理由があります。)

おすすめ記事