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

bash centos command-line linux

誤って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


タイトルとURLをコピーしました