root ユーザで rm -rf / してみた

Linux OS環境にて、絶対実行してはいけないけど、一度でいいからしてみたい。
rm -rf / を実行してみた。

rm -rf とは…
rm とは removeの略で、取り除く、除去、削除といった意味。ここではファイルを削除するコマンドとなる。

-rf とは、rm コマンドのオプションで、 -r が Recursive の頭文字で「再帰的に」を表す。この場合、再帰的にファイル(とディレクトリ)を削除する。

-f は Force の頭文字で、「強制的に」を表す。通常はファイルを消す際に、消していい?と確認されるが、このオプションを付けると有無をいわず削除を行う。

最後の / は削除の対象となるパス。 / はUnixにシステムにおけるルートパス。Windowsでいう C:\ を表すのと同じようなもの。

つまり、このコマンドの指す意味は、 / (ルートパス)以下の全てのファイルとディレクトリを強制的に削除するという恐ろしいコマンド。

通常は、一般ユーザで実行しても、ファイルの所有権限などの制限により、システム的に必要なファイルが消えることがないように設計、設定されているが、今回はUnixシステム上最高特権となる root (Windowsで言うとAdministrator相当)ユーザでこれを実行してみる。





まずはOSのインストールから。

今回は CentOS 5.3 を選んでみました。理由は手元にあって手っ取り早かったからという意外に特にないです。

さくっとインストールしていきます。

どうせ全部消えるのでパッケージも何もいりません。

あとは5分もすればこの通り。おめでとうございます。削除の準備が完了しました。

いったん再起動して…

OSが立ち上がります。

ついにログイン画面が現れました。
さて、ここから root でログインして…

…の前に、スナップショット(復元ポイント)を作成しておきます。
そう、これVM(仮想環境)です。実環境ではやりませんよ。入れなおしたりするの面倒くさいので。

今回はVirtualBoxを使用しました。
これでスナップショットの作成完了。

改めて root でログイン。
次いで遂に rm -rf / 実行の時…!!

Go, Enter!!
押した直後は画面上では特に反応はありません。
ふふふ…全てがどんどん消えていってるんだな。

しばらくするとこんな画面が…
マウントポイントとか/proc の中とか、ファイルシステム的になってるシステムファイルたちは root の権限を持ってしても削除できないので、
エラーになってます。

しばらくすると処理が完了します。消せるものは一通り消したということでしょうか。

Linuxではコマンドも(実行)ファイルです。コマンドは消すことが出来ます。
ls …コマンドが見つからず実行できない。
ps …コマンドが見つからず実行できない。
cd …実行でき…た!

あれ、っと思い、[TAB]キーを押してみる。(bashによる入力補完機能によるもの)
いくつかのコマンドが出てきました。


[root@localhost ~]# 
:         caller     echo      for       local      set       ulimit
!         case       elif      function  logout     shift     umask
./        cd         else      getopts   ls         shopt     unalias
[         command    enable    hash      mv         source    unset
[[        compgen    esac      help      popd       suspend   until
]]        complete   eval      history   printf     test      wait
{         continue   exec      if        pushd      then      which
}         cp         exit      in        pwd        time      while
alias     declare    export    jobs      read       times
bg        dirs       false     kill      readonly   trap
bind      disown     fc        l.        return     true
break     do         fg        let       rm         type
builtin   done       fi        ll        select     typeset

とりあえず、これらは使えるようです…(でも ls 使えなかったよなぁ)


まぁ、やることは出来たのでシャットダウンしよう…


shutdown コマンドも reboot コマンドもなくなってしまいました。
exit コマンドでログアウトしたらなにやらメッセージが出てきました。
そして以後キー入力を受け付けなくなり、なにも反応しなくなりました。

仕方ないのでリセットボタンで強制再起動…!


BIOSをロードし終わった直後、すぐにこの画面が登場しました。
GRUBです。GRUBはGRand Unified Bootloaderの略で、GNUプロジェクトによって開発されたブートローダ、つまりOSの起動を行うプログラム。
これが起動したと言うことは、
ブートローダがOSを起動できない → OSがない(or 壊れた) → OS消えました\(^o^)/

というわけで、 rm -rf / とかやるとすべて消え去ってとんでもないことになります。
なので実運用においては間違っても実行しないように。
よい子はマネしちゃダメだよ☆


2009年8月30日追記
rm -rf / 実行時の動画

2016年3月30日追記
リテイクしYouTubeにアップロードしました。

最近作ったアプリの話

先日、コナミ社の提供している コナステ のダウンロードコンテンツゲームを1クリックで起動できるアプリを作り、公開した。 Ks Game Launcher  ( Github ) 作った理由として、インストール時に作成されたショートカットをクリックするとブラウザが起動し、ログインし...