web-dev-qa-db-ja.com

シェル履歴ログなしでLinux上で暗号化コマンドを実行する方法

Shellコマンドの一部をログに記録せずに何かを暗号化して履歴をbashしたい。パスワード、ファイル名、またはコマンドをシェルの履歴に表示したくありません。 SHA2でAES256を使用してそれを行う方法は? (これが今日の最も秘密の構成だと思いますよね?)

2
Guerlando OCs
$ unset HISTFILE
$ cat something | openssl enc -e -aes256 > encrypted-something
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
3
Ipor Sircer

履歴を一時的にオフにする最良の方法は、HISTSIZE環境変数でサブシェルを開始することです。 0に設定:

HISTSIZE=0 $0
type your commands here
<ctrl-D>

元のログインシェルへの履歴ログインは、サブシェルを終了した後も影響を受けませんのままです。

$0は、使用しているのと同じシェルを開始することを保証します。 $0を任意のシェルへのパスに置き換えることができます(例:/bin/sh)。

これは、bashkshzshdashを含む最も一般的なシェルで機能します。これはPOSIX標準だと思います。

exitと入力して、サブシェルを終了することもできます。

$ true 1
$ true 2
$ HISTSIZE=0 $0
$ true 3
$ true 4
$ exit
$ history 4
500  true 1
501  true 2
502  HISTSIZE=0 $0
503  history 4
7
RobertL

コマンドラインのファイル名が気になる場合は、ターミナルから読み取ることができます。

read infile; read outfile; cat $infile | openssl enc -e -aes256 > $outfile;
2
xenoid