web-dev-qa-db-ja.com

誤ってパスワードをbashコマンドラインに入力した

誤ってパスワードをbashコマンドラインに入力し、Last login: ...行をWrong passwordと間違えました(急いでいました)。痕跡を隠すために何をしますか?

私は.bash_historyを編集して問題の行を削除していました(パスワードをファイルに表示するには一度ログインし直し、それをUPARROWキーの履歴から消えるように再度ログインする必要がありました)。

コマンド履歴を保存できる場所は他にありますか?システムはCentOS 6.5です。

187
MaDa

履歴全体をクリアする代わりに、bashの履歴から問題のある行だけを削除することができます。 -dフラグで行を削除してから、-wフラグで新しい履歴を保存(書き込み)してください。

$ history
351 ssh [email protected]
352 my_password
$ history -d 352
$ history -w
183
dotancohen

これには2つの部分があります。

  • bashは履歴をファイル~/.bash_historyに格納します。デフォルトでは、このファイルはセッションの最後に書き込まれます。
  • メモリに保持されているhistory

安全のためには、セッションからそれを消去する必要があります。

history -c

必要に応じて履歴ファイルを切り捨てます。

> ~/.bash_history

パスワードを入力したセッションがまだ開いている場合は、トレースをカバーするもう1つの方法は、変数HISTFILEをnullデバイスに設定することです。セッションが終了するとき、履歴は~/.bash_historyに書き込まれません。

export HISTFILE=/dev/null
121
devnull

Bash(少なくとも私が知っているすべての歴史的および現在のバージョン)は自動的に履歴を保存しないので、保存しないことを確実にしたいコマンドを入力したときに一般的に適用できる戦略はすぐにタイプすることです。

kill -9 $$

これはキャッチできないSIGKILLでシェルを終了させるので、シェルは終了時に何かを保存する方法がありません。

他のほとんどのアプローチは事後(つまり、データがすでにディスクにヒットした後)にスクラビングすることを含み、特にシステムがbtrfsまたは同様のものを使用している場合、エラー(コピーの欠落)の可能性がずっと高くなります。

23
R..

これに対する私のお気に入りのトリックは、上向きの矢印を押し、コマンドの上でバックスペースを押し、何かを入力し(必要ではないかもしれません)、下向きの矢印を押し、「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
$ 
11
Mark Jerde

誤って履歴に保存したくないものを入力した後は、次のように入力できます。unset HISTFILE

ログアウトしたときにBashは履歴を保存する場所がわからないため、セッション全体の履歴のログ記録を無効にします。

11
mtak

他の答えに加えて、パスワードが端末のスクロールバッファ(表示されているテキストの履歴)にも含まれていることが関係している可能性があります。ディスクへの履歴。これはKDE konsoleでは、履歴サイズが "無制限のスクロールバック"に設定されているため、出力を一切破棄しません。

10
Volker Siegel

$<space> commandを使用すると、コマンドは履歴に追加されず、時々役立つ

$  history | grep mywierdgrep
$ history | grep mywierdgrep
 2005  history | grep mywierdgrep
5
jris198944

(ログアウトする前に)履歴ファイルに保存しないようにするもう1つの方法は、単に444〜/ .bash_historyをchmodしてからログアウトすることです。再度ログインして権限を再設定してください(または、妄想によってはそうではありません)。

4
Adam

繰り返し言及される

"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セッションからのコマンドをインターリーブ するために使用されます。

0
benrifkah