すべてを削除する『rm -rf /』

Linuxに限らず、UNIX系のオペレーティングシステムであればシステムを簡単に壊すコマンドとして『rm -rf /』が知られている。これは、文字通りファイルシステム上のファイルを全部削除するコマンドだ。

現在使われているファイルシステムにはさまざまな保護機能が用意されているため、完全にすべてのファイルが削除されるわけではない。だが、システムとして動作するために必要となるファイルは削除されてしまうため、システムとしてはまともに機能しなくなる。

そこで今回は、日本でも人気の高いUbuntu Desktopの最新版である「Ubuntu Desktop 18.04 LTS」でこのコマンドを実行してみる。

  • Ubuntu Desktop 18.04 LTS

    Ubuntu Desktop 18.04 LTS

rootユーザーで「rm -rf /」を実行すると、次のようにこの操作は危険だという旨が表示されてコマンドは実行されない。コマンドの実行するには「--no-preserve-rootオプションを付けるように」とメッセージが出てくるので、「rm --no-preserve-root -rf /」を実行する。

  • /から再帰的に削除するには--no-preserve-rootを指定するようにとメッセージが表示され、コマンドは実行されない

    /から再帰的に削除するには、--no-preserve-rootを指定するようにとメッセージが表示され、コマンドは実行されない

「rm --no-preserve-root -rf /」の実行が完了する多少前くらいから、画面の表示が次のようにブルーになる。すでに起動しているアプリは動き続けているものの、GNOMEシェルの一部は表示すらされなくなっている。

  • rm --no-preserve-root -rf /実行完了後のUbuntu Desktop 18.04 LTS

    rm --no-preserve-root -rf /実行完了後のUbuntu Desktop 18.04 LTS

GNOME Terminalで作業をしてみても、もうファイルシステム上にコマンドが存在しないため、新しくコマンドを実行することはできず、bashの組み込みコマンドが実行できるといった程度。さらにGUIを操作しようとすると、画面は次のようにブラックアウトした。

  • GUIの操作を試みたところブラックアウト

    GUIの操作を試みたところブラックアウト

どうにも操作できなくなったので、ハードウェア的に再起動してみた。しかし、起動に必要になるファイルが存在しないのでGRUBで起動はストップした。

  • GRUBで起動はストップ

    GRUBで起動はストップ

調べてみたところ、ファイルシステムは存在するが、次のように起動に必要になるファイルが存在していないため、起動できない状態になっていることがわかる。

  • システムの起動に必要になるファイルがまったくないため、起動できない

    システムの起動に必要になるファイルがまったくないため、起動できない

Ubuntu Serverでrm --no-preserve-root -rf /を実行した場合、シェルからの操作でコマンドがまったく使えないといった状況になった。一方、Ubuntu Desktopの場合は削除後に見た目も悪くなったうえ、GUIも動作しなくなり、最終的にスクリーンがブラックアウトした。

通常、「rm -rf /」というコマンドを実行することはないが、スクリプトを組んでパスを変数で指定してある場合などに誤って実行されることがある。

例えば、a=/var/tmp/log2といったな変数を指定してrm -rf $a/*のような処理をしていたとする。スクリプトの書き換えやロジックのミスなどで変数aが空だと、rm -rf /*というコマンドが実行されてしまうことになる。rm -rf /*はrmコマンドからの警告なしにそのまま実行されてしまうため、ここに示したようにやっぱりシステムは壊れてしまう。

  • rm -rf /*を実行したあとのUbuntu Desktop 18.04 LTS

    rm -rf /*を実行したあとのUbuntu Desktop 18.04 LTS

自分はまさかこんなミスを犯すことはないと思っているかもしれないが、誰でもこうしたミスを犯す可能性がある。一度でも実行してしまうと取り返しがつかないことになるので、注意しよう。