Linux初心者が知っておくべき危険なコマンド:`rm -rf /`を実行するとどうなるのか?
rm -rf /
コマンドとは何か?
コマンドの構成要素
rm -rf /
コマンドは、以下の要素から構成されています:
-
rm
: ファイルやディレクトリを削除するコマンド -
-r
: 再帰的(recursive)にディレクトリとその中身を削除 -
-f
: 強制的(force)に削除、確認なしで実行 -
/
: ルートディレクトリを指定
なぜ危険なのか?
このコマンドが危険な理由は、システム全体のルートディレクトリ(/
)から始まって、すべてのファイルとディレクトリを再帰的に、そして強制的に削除してしまうからです。
実際に実行するとどうなるのか?
システムへの影響
rm -rf /
を実行した場合、以下のような深刻な影響が発生します:
1. システムファイルの完全削除
- カーネル(Linux本体)の削除
- システムライブラリの消失
- デバイスファイルの削除
- 設定ファイルの消失
2. ユーザーデータの完全消失
- ホームディレクトリ内のすべてのファイル
- 個人の文書、写真、動画などのデータ
- アプリケーションの設定やデータ
3. システムの完全停止
- 実行中のプロセスがクラッシュ
- 新しいプログラムの起動不可
- 最終的にシステム全体が応答しなくなる
実行過程での現象
コマンドを実行すると、以下のような順序で破壊が進行します:
- 初期段階: コマンドが実行開始される
- 削除進行: システムファイルが順次削除されていく
- エラー発生: 重要なファイルが削除されることでエラーメッセージが表示
- プロセス停止: 削除処理自体も途中で停止する可能性
- システム応答不能: 最終的にシステムが完全に応答しなくなる
現代のLinuxでの保護機能
安全対策の実装
幸い、現代のLinuxディストリビューションでは、このような事故を防ぐための対策が実装されています
1. 権限による制限
- 一般ユーザーでは削除できないシステムファイルが多数存在
-
sudo
やroot
権限が必要な場合が多い
--no-preserve-root
オプション
2. 多くの現代的なLinuxシステムでは、rm -rf /
を実行しようとすると、以下のようなエラーメッセージが表示されます:
rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe
実際にやってみた
ちょうど使っていない仮想マシン(almalinux)があったので、消すついでに実験してみたいと思います。
SSHで接続し、rootユーザーになります。
実験を行う前に、 ls /
でディレクトリが表示されることを確認します。
まずは"rm -rf /"だけ実行してみます
先ほど説明した、安全策の一つが動作しました。動作させるためには--no-preserve-root
を付けなければ動作しません。
ちなみに.....
rm -rf /*
だと安全策が動作せず、貫通して実行させることができてしまうので注意しましょう。
おわりのはじまり
ということでLinux君の警告通り、オプションを付けて実行してみたいとおもいます。
実行するととんでもない量のログが流れます。
rm: cannot remove ~省略~: Operation not permitted
と表示されていると思います。
これは操作が許可されていないディレクトリやファイルを削除しようとして、エラーが出力されている
ということで、裏を返すとこれ以外のディレクトリやファイルはすべて削除されています。
数分まつとコマンドが完了します。
終わったら試しにls /
を実行してみたいと思います
どうやらコマンドが保存されているファイルごと消えてしまったため、まずコマンドが使えないようです。
pwd
で現在のディレクトリを確認する
こちらはかろうじて動作します。
cd ..
で親ディレクトリに移動してみる
こちらも動作しました。
しかし、cd ..
で親ディレクトリに移動した後、rootに帰ろうとしましたが、こちらは動作しませんでした。
マシンを再起動してみる
もちろんreboot
やshutdown
コマンドも消えているので、仮想マシンの電源を強制的に落として、もう一度電源をつけてみたいと思います
grubレスキューモードで起動しました。
これはLinuxのブートローダーが正常に動作しなくなった時に起動する緊急用のコマンドライン環境です。
表示される条件として、OSの起動に必要なファイルやパーティションが見つからない
というものがあるので、Linuxがしっかり破壊されていることがわかります。
事故を防ぐための対策
1. コマンドの理解
- 実行前にコマンドの意味を必ず確認
- 不明なコマンドは
man
コマンドでマニュアルを確認
2. 練習環境の利用
- 仮想マシンやDockerコンテナでの練習
- 本番環境での危険なコマンド実行を避ける
3. バックアップの重要性
- 定期的なシステムバックアップ
- 重要なデータの別途保存
4. 権限管理
- 普段は一般ユーザーアカウントを使用
- 必要な時のみ
sudo
を使用
まとめ
rm -rf /
は確実にシステムを破壊する危険なコマンドですが、現代のLinuxシステムには一定の保護機能が実装されています。しかし、これらの保護機能に頼りすぎず、コマンドの意味を理解し、慎重に操作することが最も重要です。
Linux初心者の皆さん(自分)は、以下の点を心がけてください:
- コマンドの意味を理解してから実行する
- 重要なデータは必ずバックアップを取る
- 練習は仮想環境で行う
- 不明なコマンドはインターネットで調べる
安全なLinuxライフを送るために、知識と注意深さの両方を身につけていくことが大切です。
Discussion