誤ってパスワードをbashコマンドラインに入力し、Last login: ...
行をWrong password
と間違えました(急いでいました)。痕跡を隠すために何をしますか?
私は.bash_history
を編集して問題の行を削除していました(パスワードをファイルに表示するには一度ログインし直し、それをUPARROWキーの履歴から消えるように再度ログインする必要がありました)。
コマンド履歴を保存できる場所は他にありますか?システムはCentOS 6.5です。
履歴全体をクリアする代わりに、bash
の履歴から問題のある行だけを削除することができます。 -d
フラグで行を削除してから、-w
フラグで新しい履歴を保存(書き込み)してください。
$ history
351 ssh [email protected]
352 my_password
$ history -d 352
$ history -w
これには2つの部分があります。
bash
は履歴をファイル~/.bash_history
に格納します。デフォルトでは、このファイルはセッションの最後に書き込まれます。history
安全のためには、セッションからそれを消去する必要があります。
history -c
必要に応じて履歴ファイルを切り捨てます。
> ~/.bash_history
パスワードを入力したセッションがまだ開いている場合は、トレースをカバーするもう1つの方法は、変数HISTFILE
をnullデバイスに設定することです。セッションが終了するとき、履歴は~/.bash_history
に書き込まれません。
export HISTFILE=/dev/null
Bash(少なくとも私が知っているすべての歴史的および現在のバージョン)は自動的に履歴を保存しないので、保存しないことを確実にしたいコマンドを入力したときに一般的に適用できる戦略はすぐにタイプすることです。
kill -9 $$
これはキャッチできないSIGKILL
でシェルを終了させるので、シェルは終了時に何かを保存する方法がありません。
他のほとんどのアプローチは事後(つまり、データがすでにディスクにヒットした後)にスクラビングすることを含み、特にシステムがbtrfsまたは同様のものを使用している場合、エラー(コピーの欠落)の可能性がずっと高くなります。
これに対する私のお気に入りのトリックは、上向きの矢印を押し、コマンドの上でバックスペースを押し、何かを入力し(必要ではないかもしれません)、下向きの矢印を押し、「ls」と入力してenterを押すことです。本当にぎこちない感じが、それは実際に動作します。歴史の中で間違ったコマンドを編集した後、ctrl-cを押して編集を中止しないでそれを台無しにしていたときに悩まされたとき、これを見つけました。私はbashが修正主義者の歴史を支持していると思う。 ;-)
$ passw0rd
$ <up arrow><backspace x8>cd<down arrow>echo hi
$ history|tail -3
ように見えます:
$ passw0rd
passw0rd: command not found
$ echo hi
hi
$ history|tail -3
2445* cd
2446 echo hi
2447 history|tail -3
$
誤って履歴に保存したくないものを入力した後は、次のように入力できます。unset HISTFILE
ログアウトしたときにBashは履歴を保存する場所がわからないため、セッション全体の履歴のログ記録を無効にします。
他の答えに加えて、パスワードが端末のスクロールバッファ(表示されているテキストの履歴)にも含まれていることが関係している可能性があります。ディスクへの履歴。これはKDE konsoleでは、履歴サイズが "無制限のスクロールバック"に設定されているため、出力を一切破棄しません。
$<space> command
を使用すると、コマンドは履歴に追加されず、時々役立つ
$ history | grep mywierdgrep
$ history | grep mywierdgrep
2005 history | grep mywierdgrep
(ログアウトする前に)履歴ファイルに保存しないようにするもう1つの方法は、単に444〜/ .bash_historyをchmodしてからログアウトすることです。再度ログインして権限を再設定してください(または、妄想によってはそうではありません)。
繰り返し言及される
"Prompt_COMMAND = history -a"を設定している場合、これは機能しません。[..]削除するには.bash_historyを編集する必要があります。
最初の部分は間違いなく当てはまりますが、手動で.bash_historyを編集して修正する必要はありません。 2つのコマンドを1行にまとめても、まったく問題ありません。
$ history
351 ssh [email protected]
352 my_password
$ history -d 352 ; history -w
ここでの回答の多くは、問題のコマンドを現在のセッションの履歴から削除してから$HISTFILE
(デフォルトでは〜/ .bash_history)に書き込もうとします。ただし、Prompt_COMMAND=history -a
を設定した場合は、コマンドの終了後にプロンプトが表示されたときに、パスワードを指定したコマンドがすぐに$HISTFILE
に書き込まれます。削除するには$HISTFILE
を編集する必要があります。
この設定は一般的に、 複数のオープンbashセッションからのコマンドをインターリーブ するために使用されます。