でシークレットセッションを開くことはでき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 | bashbashプロンプト、コマンドライン編集(ラインディシプリンの内部エディターのみ)、または履歴なしで非対話型を実行します。