Linuxの rm -rf / で痛い目に合う方法

最近、rm -rf / が話題になってると思ったら、こんな記事があったみたいです。

サーバ業者が” rm -rf / “で全サーバを誤消去、復旧法をQ&Aサイトに尋ねる。実は書籍執筆のための「引っ掛け問題」

今どきのLinuxでは、rm -rf / を出しても削除されないよ、ということです。
試してみましょう。まあ、Dockerでubuntu でよいでしょう。

なるほどね。今どきの rmはcoreutils に含まれていて、このrmはこういうメッセージを出して、/ を容易に rm できないようにしているんですね。

だが待ってほしい。レンタルサーバって、Linuxだけじゃないし、Linuxでも普通の構成じゃないかもしれないじゃないか。
ということで、普通じゃない構成だけど、ありそうな例を挙げてみよう。

BusyBox は、Coreutilsなど標準UNIXコマンドで重要な多数のプログラムを単一の実行ファイルに「詰め込んで」提供する、特殊な方式のプログラムである」 とWikipediaに書いてます。レンタルサーバでOSサイズを小さくしたい場合にbusyboxを使う場面はありそうです。
上記例では、busyboxから/usr/local/bin/rm にlinkをはりました。上記の環境ではrmとを実行するとき、/usr/local/bin/rmが優先実行されています。
さて、この状態で rm -rf /をやるとどうなるか?試してみましょう。

ということで、read-only mount されている場所を除いて、削除されました。
/bin も削除されているので、ls も ps も聞きませんね。bashも現在起動中のプロセスだけなので、 bashの組み込みコマンド(echoなど ) しか使えない状態です。

ということで、Linuxだとrm -rfは安全かもしれないけど絶対安全じゃないぞ、というお話でした。

なお、本番環境では絶対やるなよ?とだけ言っておきます。こういうとき、Docker便利ね。