サーバー OS linux コンピュータ

CentOS7.4で「rm -rf /」をやってみた

2018年5月4日

Linux界隈では有名な禁断コマンド「rm -rf /」を唱えてみました。

「rm -rf /」とは

左から順番に説明すると

  • rm…削除コマンド
  • -rf…ファイル・ディレクトリ関係なしに消せるものはすべて消す
  • /…トップディレクトリ配下全て消す(WindowsだとC:みたいなもの)

というコマンドになります。通称「バルス」

要約すると、HDDファイル全て葬り去るコマンドです。

一般ユーザの場合だと権限の問題により消せるものが少なくので影響度はまだ小さいですが、rootユーザになると色んなものが吹き飛ばされます。

「rm -rf ./」とスラッシュの前にドットを入れることでカレントディレクトリ配下を削除するコマンドになるのですが、ドットぬけたり「rm -rf . /」とドットとスラッシュの間にスペースを入れてしまうことで全消しが発動してしまいます。

なので削除コマンドを行う際には慎重にやってる方が多いのではないでしょうか。

実際に自分も過去にやらかしたことがあり、開発環境を闇へ葬り去りました。あの時は大変ご迷惑をおかけしました

実際にやってみた

CentOS6.4以降はフェールセーフが働くようになってる

今回はCentOS7.4を用いて実際にコマンドをたたいてみました。

rm: `/' に関して再帰的に操作することは危険です
rm: このフェイルセーフを上書きするには --no-preserve-root を使用してください

と表示され、バルスの詠唱ができないようになっています。

フェールセーフとはシステムの不具合や故障が発生したときに、障害の影響範囲を最小限にとどめるよう安全を最優先とした制御のことです。

今回のケースでは間違って全消しを行わないように制御されていると思ったらいいですね。

最近のCentOS(RHEL)はこの制御が実装されており、全消ししないように制御が入ったみたいです。

無理やり削除してみる

かといって、このまま引き下がると面白くないので、「--no-preserve-root」をつけて削除してみることにしました。

「rm: `〇〇' を削除できません: デバイスもしくはリソースがビジー状態です」がたくさん出てきた後、しれっと入力モードになります。
一応コマンドは受け付けてくれます。

使えるコマンド

バルスを唱えた後に使えるコマンドは以下になります。

最小構成インストール時で使えるコマンドは1411個あるのですが、バルスを唱えた後だと93個まで減りますね。
cdやpwdは使えます。
lsはコマンド一覧にありますが、内部処理でbashを使っています。
bashは一覧にないため、lsコマンドを実行してもエラーが発生し、使えません。

セッションがつながっている状態であれば、Teraterm上で操作できますが、新たにログインができなくなってます。(/bin/bashがないので当たり前)

ホスト(ESXi)上からだとexitしてから永遠にかえってきませんでした。

再起動かけると起動さえしてくれません。ブートローダーもお亡くなりになるのね。

ここでブートローダーを再インストールしたとしても…。先は見えてますね。

まとめ

今は簡単に一気に削除できなくなったとはいえ、怖いコマンドであるのは変わりはないです。

それに今回のフェールセーフ対象となってるのは「rm -rf /」のみなので例えば「rm -rf /bin」とかだとこれまで通り削除できます。

↑「rm -rf /bin」を実行すると、/bin/bashが吹っ飛んでしまうため、永遠にログインできなくなります。


↑Teratermでログインしようとするとユーザ認証失敗というエラーが表示されます。

rm -rfコマンドを実行する場合はパスが本当に問題ないか何度もチェックしてから実行しよう

おまけ1

Windows版だと「cmd /c rd /s /q c:」で同じことができます。

余ってるWindowsOSがあるのでどうなるのか今度検証してみます。

おまけ2

いつか「バルス」を唱えてみたい人のために

aliasを使えばだれでも簡単にバルスを唱えることができます。

alias バルス="rm -rf / --no-preserve-root"

ご利用は計画的に

-サーバー, OS, linux, コンピュータ
-, ,