Ubuntu Serverで「bin、lib、lib64、sbin」フォルダを魔法のように削除する方法は?

Ubuntu Serverで「bin、lib、lib64、sbin」フォルダを魔法のように削除する方法は?

ある日、Ubuntu 20サーバーを再起動しようとしましたが、「カーネルパニック」のために起動が失敗しました。サービスプロバイダが提供する「回復モード」を使用して調査したところ、ルートディレクトリにフォルダがないことがわかりました。

  • ゴミ箱
  • 図書館
  • 図書館 64
  • 回転

我々はこの問題を解決し、/usr/xxxに対応するシンボリックリンクを作成した後、問題なく起動しました。

現在のところ、どのようにこのようなことが起こったのかわかりません。

  1. これらの症状に既知の脆弱性や悪用の例はありますか?
  2. 根本原因をより詳細に理解するには、何を確認する必要がありますか?

- 編集する -

答えが示唆したように、rootとして履歴を確認しましたが、「魔法のように消える」フォルダに関連する「rm -rf *」(または同様のもの)に関連する内容を見ることはできません。私が得た結果は次のとおりです。

歴史grep rm

  887  rm 09
  888  rm _new*
  891  rm _new*
  893  rm _new*
  916  rm _new_*
  918  rm _new_*
  922  rm _new_*
  927  rm _*
  934  rm _*
  936  rm _*
  974  rm woo*
  975  rm -r woocommerce_uploads/
  980  rm -r test/
 1024  rm -r directory-files-converter_MODIFIED/
 1165  history | grep rm

歴史グレブ・ビン

  502  joe /usr/local/bin/copias
  516  joe /usr/local/bin/copias
  518  joe /usr/local/bin/copias
  520  joe /usr/local/bin/copias
  575  cd /usr/local/bin/
  609  cd /usr/local/bin/dreport
  610  cd /usr/local/bin/dcheck/
  760  cat /usr/local/bin/copias
  764  /usr/local/bin/dreport
 1166  history | grep bin

どこを見るかについての他のアイデアがありますか?

ベストアンサー1

rm /*誰かまたは何かがroot権限で実行されました。history(ルートとして)確認してください。

または、次の形式のコードを含む誤って書かれたスクリプトをたくさん見ました。

rm $someVar/*

Expect$someVarは空ではなく、またはワイルドカード文字を含まず$IFS、で始まりません-。ただし、シナリオをトリガーできるのは、$someVar変数が拡張され、コマンドが次のように空であることです。

rm /*

または、$someVar発生する文字$IFS(デフォルトでは空白、タブ、改行)で終わります。たとえば、someVar='dir 'この場合、コマンドは次のようになります。

rm dir /*

コードをよりよく書くと、rm -- "$someVar"/*後者の問題は解決することができますが、それでも$someVarnullの場合は対処できません。 2つのオプションは次のとおりです。

[ -n "$someVar" ] && rm -f -- "$someVar"/*    # Execute only if set

rm -f -- "${someVar:?is undefined}"/*         # Abort with error if unset or empty

nounsetオプション(set -o nounsetまたは)を設定すると、未set -u設定の変数を逆参照するとシェルプロセスが中断され、これらの問題を引き起こす可能性がある変数名の誤字を検出するのにも役立ちます。

おすすめ記事