でシークレットセッションを開くことはできbash
ますか?
たとえば、コマンドにパスワードを入力する必要がありbash
、それらを履歴に追加したくない場合。
secrectcommand
、bashの履歴にはありません。
でシークレットセッションを開くことはできbash
ますか?
たとえば、コマンドにパスワードを入力する必要がありbash
、それらを履歴に追加したくない場合。
secrectcommand
、bashの履歴にはありません。
回答:
bash
コマンドのロギングを停止する場合は、HISTFILE
変数の設定を解除します。
HISTFILE=
これ以降のコマンドはすべてに記録されなくなります.bash_history
。
一方、実際にコマンドの引数としてパスワードを提供している場合は、すでに何か間違ったことをしていることになります。.bash_history
誰にも読めないため、この状況では最大の脅威ではありません。
ps
そして/proc
大きな問題です。システムのすべてのユーザーは、現在実行中のコマンドとその引数をすべて見ることができます。したがって、コマンドライン引数としてパスワードを渡すことは本質的に安全ではありません。環境変数または構成ファイル(chmodded 600を使用)を使用して、パスワードを安全に提供します。
unset HISTFILE
同様の効果があります。この機能があります:n() { HISTFILE=; PS1="~${PS1#\~}"; }
。そうすれば、「シークレットモード」であるかどうかを明確に確認できます。
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
他の時。
cat | bash
bash
プロンプト、コマンドライン編集(ラインディシプリンの内部エディターのみ)、または履歴なしで非対話型を実行します。