「rm -rf /」を使ってみる

検証用のEC2を停止・削除するので、その前にせっかくだから知識としてしか知らない滅びの呪文、`rm -rf /`を試してみる。
(ディストリビューションは`Amazon Linux 2023`)

まずはオプションなしで実行する。
```
$ sudo rm -rf /
rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe
$ 
```

そう、「危険なのでどうしてもやるなら`--no-preserve-root`を使え」と警告が出る。
現在の大抵のディストリビューションでは警告が出ると聞いてたが、その通り。

では`--no-preserve-root`を付けてみると。
```
$ sudo rm -rf --no-preserve-root /

中略

rm: cannot remove '/sys/module/fat/sections/.rodata.str1.1': Operation not permitted
rm: cannot remove '/sys/module/fat/sections/.text.unlikely': Operation not permitted
rm: cannot remove '/sys/module/fat/sections/.note.gnu.property': Operation not permitted
rm: cannot remove '/sys/module/fat/sections/.retpoline_sites': Operation not permitted
rm: cannot remove '/sys/module/fat/sections/__ksymtab_strings': Operation not permitted
rm: cannot remove '/sys/module/fat/sections/__ksymtab_gpl': Operation not permitted
rm: cannot remove '/sys/module/fat/sections/.rodata.str1.8': Operation not permitted
rm: cannot remove '/tmp': Device or resource busy
rm: cannot remove '/var/lib/nfs/rpc_pipefs/gssd/clntXX/gssd': Operation not permitted
rm: cannot remove '/var/lib/nfs/rpc_pipefs/gssd/clntXX/info': Operation not permitted
rm: cannot remove '/var/lib/nfs/rpc_pipefs/nfsd': Operation not permitted
rm: cannot remove '/var/lib/nfs/rpc_pipefs/cache': Operation not permitted
rm: cannot remove '/var/lib/nfs/rpc_pipefs/nfsd4_cb': Operation not permitted
rm: cannot remove '/var/lib/nfs/rpc_pipefs/statd': Operation not permitted
rm: cannot remove '/var/lib/nfs/rpc_pipefs/portmap': Operation not permitted
rm: cannot remove '/var/lib/nfs/rpc_pipefs/nfs': Operation not permitted
rm: cannot remove '/var/lib/nfs/rpc_pipefs/mount': Operation not permitted
rm: cannot remove '/var/lib/nfs/rpc_pipefs/lockd': Operation not permitted
$ ll
-bash: /usr/bin/ls: No such file or directory
$ ls /
-bash: /usr/bin/ls: No such file or directory
$ 
```

カーネル関連のファイルなど、それでも削除できない一部のファイルを除き綺麗さっぱり消された模様。
lsコマンドも使えなくなっている。

```
$ cd /
$ pwd
/
$ 
```
組み込みコマンドの`cd`や`pwd`は使えた。
```
$ type cd
cd is a shell builtin
$ type pwd
pwd is a shell builtin
$ 
```

ちなみに`rm -rf /`だから警告が出たが、`rm -rf /*`だと出ないとも聞いたことがある。
別の機会に試してみようと思う。

---
2024/4/7追記

`rm -rf /*`を試してみた。
(今回もディストリビューションは`Amazon Linux 2023`)
```
$ sudo rm -rf /*

中略

rm: cannot remove '/sys/module/fat/sections/__ksymtab_gpl': Operation not permitted
rm: cannot remove '/sys/module/fat/sections/__ex_table': Operation not permitted
rm: cannot remove '/sys/module/fat/sections/.rodata.str1.8': Operation not permitted
rm: cannot remove '/tmp': Device or resource busy
rm: cannot remove '/var/lib/nfs/rpc_pipefs/gssd/clntXX/gssd': Operation not permitted
rm: cannot remove '/var/lib/nfs/rpc_pipefs/gssd/clntXX/info': Operation not permitted
rm: cannot remove '/var/lib/nfs/rpc_pipefs/nfsd': Operation not permitted
rm: cannot remove '/var/lib/nfs/rpc_pipefs/cache': Operation not permitted
rm: cannot remove '/var/lib/nfs/rpc_pipefs/nfsd4_cb': Operation not permitted
rm: cannot remove '/var/lib/nfs/rpc_pipefs/statd': Operation not permitted
rm: cannot remove '/var/lib/nfs/rpc_pipefs/portmap': Operation not permitted
rm: cannot remove '/var/lib/nfs/rpc_pipefs/nfs': Operation not permitted
rm: cannot remove '/var/lib/nfs/rpc_pipefs/mount': Operation not permitted
rm: cannot remove '/var/lib/nfs/rpc_pipefs/lockd': Operation not permitted
$ ll
-bash: ls: command not found
$ ls
-bash: ls: command not found
$ cd /
$ pwd
/
$ 
```

確かにオプション付けなくても警告出ずに処理が進むことを確認。