シークレットbashセッションを開く方法は?

シークレットbashセッションを開く方法は?

でシークレットセッションを開くことはできますかbash

たとえば、コマンドにパスワードを入力する必要がありますが、bashこれを履歴に追加したくない場合です。

答え1

bashロギングコマンドを停止するには、HISTFILE変数の設定を解除するだけです。

HISTFILE=

すべての追加コマンドは記録されません.bash_history

一方、実際にコマンドの引数としてパスワードを入力すると、すでに間違った操作を行っています。.bash_history世界中で読むことができないので、この場合最大の脅威ではありません。

ps/proc大きな問題です。システムのすべてのユーザーは、現在実行中のコマンドを表示できます。そして彼らのすべての主張。したがって、パスワードをコマンドライン引数として渡すことは本質的に安全ではない。パスワードを安全に提供するには、環境変数または構成ファイル(600をchmodded)を使用してください。

答え2

HISTCONTROL=ignorespace

このオプションが設定されていない場合は、必要なbashものかもしれません。すべての履歴を無効にするよりも弱くなります。この設定では、空白文字で始まるコマンドラインは履歴リストに保存されません。

次の関連リンクから:

BashにHISTControl = ignorespaceオプションがあるのはなぜですか?

bashで空白で始まるコマンドを保存しないのはなぜですか?

答え3

一時的に履歴を無効にできます。set +o history

set +o history
...
set -o history

履歴を無効にすることと設定を解除することには違いがありますHISTFILE

HISTFILE=
date
ls
HISTFILE=~/.bash_history
history

出力は次のとおりです。

84  HISTFILE=
85  date
87  ls
88  HISTFILE=~/.bash_history
89  history

つまり、すべてのコマンドが履歴リストに保存されます。exit保存するには入力してください。
しかし、

set +o history
date
ls
set -o history
history

出力は次のとおりです。

115  set +o history
116  history

一般化する
set +o history長時間セッションに使用されます。
HISTCONTROLそして<space>command他の時には。

関連情報