クラウド環境でrmコマンドを使って困ってみる

記事タイトルとURLをコピーする
みなさま、はじめまして。
サーバーワークス新入社員の宮澤です。
今回は、先輩とランチしているときに話題に出た”rm -rf”コマンドを実行して、消去されたデータが復元できるかを検証しました。

1.検証環境

今回の検証は、Amazon Web Servicesで行います。
その理由は以下のようなことがいえるからです。

また、今回利用するAWSでは、EBS(ボリューム)のスナップショットを利用してデータを戻すことができるんですが、
あえて、スナップショットを使わずにデータを復元したいと思います。
詳しい、”Amazon Web Services”の機能についてはこちら

2.インスタンスを2つ作成する。

以降の説明でわかりやすくするためにインスタンスに名前をつけます。
コマンドを実行する為のインスタンス:tanatos
オペレーションシステム:CentOS i386-ebs
インスタンスタイプ:Micro(t1.micro,613MB)
復活させるためのインスタンス:reborn
オペレーションシステム:amazonlinux i386-ebs
インスタンスタイプ:Micro(t1.micro,613MB)
※インスタンスを作成する際は、セキュリティグループなどの設定をお忘れなく。
インスタンスを作成したら"Teraterm"などの端末エミュレータを利用し、ログインします。
さっそく"tanatos"で"rm -rf /"を実行すると、以下のように削除が開始されます。
図1 キャプチャー画像
削除終了後に、ディレクトリの状態を確認する為に、"ls"コマンドを実行しますが、コマンド使えず確認できません。
しかし、唯一”cd”コマンドが使えるようなので"cd"を使い、補完機能でディレクトリを確認します。
ここでの注意点は、sshなども削除されているため"exit"でログアウトすると"2度と"ログインできないということです。
図2 "cd"を使いディレクトリを確認
図3 "rm -rf /"実行後のディレクトリ状況

3.データの復元を試みる

extundeleteを使って復元する。
ルートディレクトリ以下を削除していなければ、インストールして復元を行いたいのですが、今回の状態では"yum install"といったコマンドも実行出来ない状態になっています。
そのため、ボリューム(EBS)を別のマシンに移動し、復元を行います。
まず、"tanatos"のボリュームをデタッチし、"reborn"にアタッチします。
図4 アタッチとデタッチ
"reborn"インスタンスを起動して、ログイン。
この状態では、"tanatos"のボリュームを見ることはできません。
そのため、ボリュームをマウントし、データを確認します。
マウント先のディレクトリを作成
# mkdir /tanatos
"tanatos"のボリュームをマウント
# mount /dev/sdf /tanatos
extundeleteをインストール
extundeleteのインストールに必要なパッケージをインストール
# yum install make
# yum install gcc-c++
# yum -y install e2fsprogs-devel
extundeleteをインストール
# cd /usr/local/src
# wget "http://downloads.sourceforge.net/project/extundelete/extundelete/0.2.0/extundelete-0.2.0.tar.bz2?r=http%3A%2F%2Fextundelete.sourceforge.net%2F&ts=1295777113&use_mirror=jaist"
# tar xfj extundelete-0.2.0.tar.bz2
# cd extundelete-0.2.0
# ./configure --prefix=/tmp/a && make && make install
復元するコマンドを実行
 # cd /
 # /tmp/a/bin/extundelete --restore-all --after $(date +%s -d '1 hour ago') /dev/sdf
RECOVERED_FILESディレクトリが作成され、復元データが出現
正常に動作するかを確認し、マウントしたディレクトリにコピー
 # cp -rp /RECOVERED_FILES /tanatos
データを移動したらEBSをアンマウント
 # umount -l /dev/sdf
これでデータを移動した状態でEBSをデタッチ
図5 アンマウントしたときのEBSのファイルの状態
EBSを"tanatos"にアタッチして、SSHを使ってログインを試みるが、接続できない・・・。
再度、ボリュームの中身を確認してみます。
すると、sshのファイルなどが行き場を失い"lost+found"ディレクトリに集合しています。
図6 lost+foundの中身
”lost+found”ディレクトリ内のファイルを正しい位置に移動します。
# cd /RECOVERED_FILES
# cd -rp openssl /usr/lib/openssl
ファイルを移動した結果、リモートログインを使えるまでの復元には至りませんでした。
しかし、復元できないと思われていたデータが一部でも復元できたので、検証を行った価値はあるのかなと思います。

おわりに

今回の検証は、やはりクラウド環境でなければ出来ないことだったと思います。
今回使用したAWSは、マシンイメージが用意されているため、すぐにサーバを準備出来たので、作業時間(待ち時間)のない状態で作業ができました。
また、キャプチャー画像の取り忘れなどがあり、インスタンスを立ち上げてはTerminateをすることが多かったのですが、 このように、インスタンスの作成や削除が簡単にできるのが、クラウドの便利で面白い部分だと思います。
余談ですが、最近のdebian系のOSでは"rm -rf /"をデフォルトで使用できないようになっているので安心ですね。
AmazonLinuxでも使用できなくなっているようです。
図7 AmazonLinuxでの実行結果
---------------------------------------------------------------------------------------------
参考にしたサイト
PoweredBy