誤ってbashのコマンドラインにパスワードを入力してしまい、Last login: ...
の行をWrong password
と間違えてしまいました(焦りました)。痕跡を消すにはどうすればいいのでしょうか?
私がしたことは、.bash_history
を編集して、問題のある行を削除したことです(パスワードがファイルに表示されるのを見るために一度再ログインして削除し、UPARROWキーの下にある履歴からそれが消えるのを見るために再度再ログインしなければなりませんでした)
コマンド履歴を保存できる場所はありますか?システムはCentOS 6.5です
195 MaDa 2014-04-02
履歴全体を消去する代わりに、bash
の履歴から問題のある行だけを削除することができます。-d
フラグでその行を削除し、-w
フラグで新しい履歴を保存(書き込み)するだけです
$ history
351 ssh me@site.com
352 my_password
$ history -d 352
$ history -w
191 dotancohen 2014-04-02
これには2つの部分があります
bash
は履歴をファイル~/.bash_history
に保存し、デフォルトではセッションの終了時に書き込まれます- メモリに保持されている
history
を指定します
安全のためには、セッションからクリアする必要があります
history -c
を実行し、必要に応じて履歴ファイルを切り捨てます
> ~/.bash_history
パスワードを入力したセッションがまだ開いている場合は、セッションが終了したときに履歴が~/.bash_history
に書き込まれないように、HISTFILE
変数をNULLデバイスに設定することでトレースをカバーすることができます
export HISTFILE=/dev/null
120 devnull 2014-04-02
bash (少なくとも私が知っているすべての歴史的なバージョンと現在のバージョン) は終了するまで履歴を自動的に保存しないので、保存されないようにしたいコマンドを入力したときに一般的に適用可能な方法は、すぐに入力することです
kill -9 $$
これはシェルをSIGKILL
で殺してしまうので、シェルは終了時に何も保存することができません
他のほとんどのアプローチでは、事実の後(すなわち、データがすでにディスクにヒットした後)にスクラブすることになります
22 R.. GitHub STOP HELPING ICE 2014-04-02
履歴に保存したくないものを誤って入力してしまった後はunset HISTFILE
Bash はログオフ時に履歴をどこに保存するかわからないので、事実上セッション全体の履歴ログを無効にすることになります
11 mtak 2014-04-02
私のお気に入りのトリックは、上向き矢印を押して、コマンドの上にバックスペースを置き、何かを入力し(必要ないかもしれません)、下向き矢印を押して、”ls “と入力してエンターキーを押すことです。これは非常に陳腐な感じがしますが、実際にはうまくいきます。履歴の中で間違ったコマンドを編集してしまい、編集を中断するために ctrl-c を押さなかったために編集が台無しになってしまったときに、イライラしていたときにこのことがわかりました。bash は歴史の修正をサポートしていると思います。)
$ passw0rd
$ <up arrow><backspace x8>cd<down arrow>echo hi
$ history|tail -3
Looks like:
$ passw0rd
passw0rd: command not found
$ echo hi
hi
$ history|tail -3
2445* cd
2446 echo hi
2447 history|tail -3
$
11 Mark Jerde 2014-04-03
他の回答に加えて、パスワードがターミナルのスクロールバッファ – 表示されているテキストの履歴 – にもあること、さらに問題なのは、ターミナルエミュレータが履歴をディスクに保存している場合、ハードディスク上にある可能性があることです。これは KDE konsole で、履歴サイズが “unlimited scrollback” に設定されていて、出力を決して破棄しないように設定されている場合に起こります
10 Volker Siegel 2014-04-03
$<space> command
では、コマンドが履歴に追加されないので、便利な場合もあります
$ history | grep mywierdgrep
$ history | grep mywierdgrep
2005 history | grep mywierdgrep
7 jris198944 2014-04-02
ログアウトする前に)履歴ファイルに保存しないようにするもう一つの方法は、単純に以下の通りです
chmod 400 ~/.bash_history
を実行してログアウトします。履歴がファイルに書き込まれるのを止めて (ファイルは読み取り専用なので)、bash セッション全体が破棄され、以前の履歴が保持されるようにします
再度ログインして、600
のパーミッションをリセットしてください(妄想の度合いにもよりますが!)
4 Adam 2014-04-03
何度も言及されているのを目にします
PROMPT_COMMAND=history -a” を設定している場合は動作しないことに注意してください […] 削除するには .bash_history を編集する必要があります
最初の部分は確かにそうですが、手動で .bash_history を編集して修正する必要はありません。二つのコマンドを一行にまとめれば完璧に動作します
$ history
351 ssh me@site.com
352 my_password
$ history -d 352 ; history -w
1 Floris Kruisselbrink 2017-12-07
ここでの回答の多くは、問題のコマンドが $HISTFILE
(デフォルトでは ~/.bash_history) に書き込まれる前に、問題のコマンドを現在の bash セッションの履歴から削除しようとしています。しかし、PROMPT_COMMAND=history -a
を設定している場合、コマンドが終了した後にプロンプトが表示されたときに、パスワードが書かれたコマンドはすぐに $HISTFILE
に書き込まれます。これを削除するには $HISTFILE
を編集する必要があります
この設定は、複数の開いている bash セッションからのコマンドのインターリーブによく使われます
0 benrifkah 2017-08-31
syslogのログも確認したいでしょう。無効なログインは通常 syslog に記録されます
/var/log/messages、またはお使いのOSの同等のものを使用してください
-3 bcarroll 2014-04-05