bash
でシークレットセッションを開くことはできますか?
たとえば、コマンドにパスワードを入力する必要があり、bash
にパスワードを履歴に追加させたくない場合。
bash
でコマンドのロギングを停止するには、HISTFILE
変数の設定を解除します。
HISTFILE=
その後のすべてのコマンドは、.bash_history
に記録されなくなります。
一方、コマンドの引数として実際にパスワードを指定している場合は、すでに何か問題があります。 .bash_history
は世界中で読めるわけではないため、この状況での最大の脅威ではありません。
ps
と/proc
が大きな問題です。システム上のすべてのユーザーは、現在実行中のコマンドとそのすべての引数を表示できます。したがって、コマンドライン引数としてパスワードを渡すことは本質的に安全ではありませんです。安全にパスワードを提供するには、環境変数または構成ファイル(600をchmoddedしたもの)を使用します。
HISTCONTROL=ignorespace
このオプションがbash
にまだ設定されていない場合は、必要なだけかもしれません。すべての履歴を無効にするよりも衰弱しません。この設定では、スペース文字で始まるコマンドラインは履歴リストに保存されません。
これらの関連リンクから:
履歴を一時的に無効にすることができます: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
他の時間。