
mysqlのパスワードを含む "credential.txt"ファイルがあります。このテキストファイルを呼び出し、ここでパスワードを検索する別のスクリプトがあります。セキュリティ上の理由から、パスワードを直接保存したくありません。この目的のために、Triple-DES Cipher暗号化を使用してファイルを暗号化しました。
openssl des3 -salt -in credential.txt -out credential.des3
これで、シェルスクリプトで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
パスワードを渡す簡単な方法はありません。cron
crontab
永続ストレージへのプレーンテキストパスワードアクセスを防ぐには、tmpfs
ファイルシステム(Linux)に保存するように設定できます。mount -t tmpfs tmpfs /path/to/mount/point
または、対応する項目を使用してインストールできますfstab
。システムですでに/tmp
usingを使用している可能性がありますtmpfs
。
別のオプションは、プレーンテキストパスワードを保存するスクリプトを継続的に実行し、sleep
適切な時間に実際の操作を実行することです。ただし、この場合、スクリプトがクラッシュしても自動的に再起動されません。とにかく再起動するには、パスワードを手動で入力する必要があります。
とにかく、メモリの秘密はスワップのために書き込まれます(存在する場合)。 (このような理由で暗号通貨取引所を利用する理由があります。)