セイgpg2を使用して暗号化されたファイルの更新内容とのbashスクリプト
file.txtを暗号化したファイルがあるとしなければなりません再度暗号化してください。
(1)gpg2を使用したbashスクリプトでは、どのような方法が最も簡単でしょうか?操作では、解読するパスワードを1回だけユーザーに要求する必要があります。後で最終暗号化に同じパスワードを使用する必要があります。ここで
は、最も可能性の高い、非常に安全でないが、私はarchieveしようとするものの実施例である:
function update-encrypted-file() {
read pass_tmp;
local pass=$pass_tmp;
unset pass_tmp;
local file="file.txt";
local tmp_result=$(cat $file | gpg2 --batch --passphrase $pass | update);
echo $tmp_result | gpg2 -c --batch --passphrase $pass > $file;
}
更新がかなったかもしれないのに対し。 alias update="tr -d X"
(すべてのXを削除してください)
(2)上記の例が安全でない場合はどうなりますか?私はread
自体を使用していると思いますが、なぜか見て興味深いでしょう。変数がローカルに設定されていないと、パスワードは短時間グローバルスペース内に入ります。それはおそらくフェッチされますか?この場合、pin30-ttyをどのように使うのか分かりませんでした。(this post)
(3)それ以外は、--passphrase
のgpg2ドキュメントには、「明らかに、ユーザシステムを避けるためにこのオプションを使用しないでください。 " これは、コマンドがログに記録されているので、端末内で手動で使用する場合にのみ当てはまりますか?
最後の例は正常に動作するはずですか?私は更新されたファイルの代わりに空のファイルを持つことになります。それは同じファイルに標準と標準出力を持っているという問題のためではありませんか?例えばlike: –
実際、それについては考えていませんでした。しかし、一時ファイルに書き込んだ後で、変数にコンテンツを格納するのではなく、元に戻すことをお勧めします。あらゆる種類の(サイズ)制限があり、暗号化されていないバージョンは絶対に保存しない方がよいでしょう。 –
であり、将来、 'echo $ unquotedVar'はシェルのアンチパターンであり、' \ r、\ n'や多くのCtrl-Charsがその値にあるときに問題を引き起こすでしょう。一般的に、すべての変数をdbl-quoteしてください! '' $ file ''、 '$ pass' 'を除いて、ここでは必要ないと同意します。皆さんお元気で。 – shellter