محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

آموزش بازیابی فایل حذف شده در لینوکس با دستور debugfs

امروز می خواهیم در ITPRO بصورت بسیار ساده و بدون نیاز به هرگونه ابزار جانبی یک فایل حذف شده در سیستم عامل لینوکس را با استفاده از ابزار debugfs بازیابی یا recovery کنیم ، برای بازگردانی یک فایل حذف شده در سیستم عامل لینوکس مهمترین فاکتور دانستن inode number فایل مورد نظر است که در آموزش زیر این روش به شما آموزش داده شده است ، در ابتدا مشابه دستور پایین ما محتویات را بررسی می کنیم و فایلی که قرار هست حذف شود را به شما نمایش می دهیم ، در دستور زیر فایل unity.txt قرار هست از سیستم عامل حذف شود :

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
[root@localhost ext3]# ls -la
total 24
drwxr-xr-x.  3 root root  4096 Jul 11 09:03 .
drwxr-xr-x. 22 root root  3420 Jul 11 09:02 ..
drwx------.  2 root root 16384 Jul 10 04:14 lost+found
-rw-r--r--.  1 root root    31 Jul 11 09:03 unity.txt

دقت کنید که فایل سیستم ما برای ریکاوری در این حالت حتما باید ext3 یا بالاتر از آن باشد و سناریوی ما نیز بر اساس همین فایل سیستم قرار دارد ، با استفاده از دستور زیر شما می توانید inode number فایل unity.txt را مشاهده کنید :

[root@localhost ext3]# ls -ia unity.txt 
12 unity.txt

پارامتر i در دستور بالا به شما inode number ها را نمایش می دهد که با توجه به خروجی دستور بالا در اینجا inode فایل unity.txt عدد 12 می باشد. حالا با استفاده از دستور debugfs بایستی به فایل سیستم مورد نظر متصل شویم ، در دستور پایین ما به پارتیشن اول سیستم که بصورت پیشفرض وجود دارد با استفاده از debugfs متصل می شویم و بلافاصله می توانیم وارد محیط خط فرمان debugfs شویم :

[root@localhost ext3]# debugfs /dev/sdb1
debugfs 1.42.9 (28-Dec-2013)
debugfs:

حالا می توانید دستورات مربوط به debugfs را وارد کنید ، مشابه دستورات پیشفرض لینوکس شما می توانید با استفاده از دستور ls لیست فایل های موجود در این فایل سیستم را مشاهده کنید :

debugfs:  ls
 2  (12) .    2  (12) ..    11  (20) lost+found    12  (4052) unity.txt

همانطور که در بالا مشاهده می کنید فایل unity.txt وجود دارد و ما با استفاده از دستور rm مشابه زیر فایل مورد نظر را از سیستم حذف می کنیم و بنا به دلایلی از debugfs خارج یا quit می کنیم :

debugfs:  rm unity.txt 
rm: Filesystem opened read/only
debugfs:  quit

فایل مورد نظر حذف شده است اما چرا ما quit کردیم ؟ دقت کنید که در حالت پیشفرض دستور debugfs فایل سیستم را در حالت read only به سیستم mount می کند و امکان نوشتن یا write کردن ندارد ، برای اینکه شما امکان ریکاوری و write مجدد اطلاعات داشته باشید باید از پارامتر w برای mount کردن فایل سیستم به شکل زیر استفاده کنید :

[root@localhost ext3]# debugfs -w /dev/sdb1
debugfs 1.42.9 (28-Dec-2013)
debugfs:

البته پیشنهاد می شود که شما به جای استفاده از rm از دستور lsdel برای حذف کردن فایل ها استفاده کنید ، به هر حال فایل مورد نظر اگر با lsdel حذف شود به شکل زیر حذف می شود :

debugfs:  lsdel
 Inode  Owner  Mode    Size      Blocks   Time deleted
    12      0 100644     31      1/     1 Mon Jul 11 09:07:58 2016
1 deleted inodes found.
debugfs:  undel 12 tt.txt
12: File not found by ext2_lookup 

خوب در خروجی دستور بالا که برای حذف کردن فایل مورد نظر استفاده می شود ما عدد 12 را به عنوان inode مشاهده می کنیم ، حالا کافیست با استفاده از دستور undel و آوردن شماره inode مورد نظر و همچنین اسم فایل مورد نظر جدید فایل را ریکاوری کنیم به دستور زیر دقت کنید :

debugfs:  undel <12> tt.txt

حالا با استفاده از دستور ls مشاهده می کنید که فایل مورد نظر با یک اسم جدید بازیابی شده است :

debugfs:  ls
 2  (12) .    2  (12) ..    11  (20) lost+found    12  (4052) tt.txt   

برای اینکه بتوانید به درستی از دستورات بالا استفاده کنید ، باید با لینوکس تا حد مقدماتی کار کرده باشید ، توصیه می کنم اگر می خواهید لینوکس را بصورت اصولی یاد بگیرید ، وارد دوره آموزش لینوکس اسنشیالز در این لینک شوید.


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

محمد نصیری هستم ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 50 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم و مقیم کشور ترکیه هستم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.

نظرات