عموما در لینوکس برای حذف فایلها یا فولدرها از دستورات rm و rmdir استفاده میکنیم. در این مواقع سیستم عامل واقعا فایل را از روی حافظه پاک نمیکند و صرفا آدرس فایل پاک میشود و فضای اشغال شده توسط فایل روی دیسک بعدا قابل استفاده خواهد بود. یعنی دادههای اصلی روی دیسک موجود هستند تا در نوشتنهای بعدی روی آنها دادهی جدید نوشته شود.
برای جلوگیری از بازیابی اطلاعات یک فایل حذف شده باید روی آن دادههای جدیدی بنویسیم. این کار را در لینوکس با دستور shred انجام میدهیم که دادههای رندوم را روی فایل مینویسد. در این پلاس نحوهی استفاده از این دستور را به شما آموزش میدهیم.
در این پلاس ما از یک فایل با نام test.txt و محتوای زیر استفاده میکنیم:
It is line 1.
It is line 2.
It is line 3.
It is line 4.
سینتکس دستور shred
حالت سادهی این دستور به صورت زیر است:
shred [options] [filename]
لیست option هایی که ما میتوانیم با دستور shred استفاده کنیم را در زیر میبینیم.
overwrite کردن یک فایل
shred [filename]
به جای [filename] اسم فایل خود را بنویسید. اگر اسم فایل فاصله دارد آن را درون کوتیشن قرار دهید.
همانطور که میبینید محتوای فایل اوررایت شده است.
چند بار overwrite کردن فایل
shred -n [number] [filename]
با این دستور مشخص میکنیم که چند بار دادهی رندوم روی فایل اصلی نوشته شود:
همانطور که میبینید ما از آپشنهای -v و -z هم استفاده کردیم. این دو دستور به ترتیب باعث چاپ شدن اطلاعات روند فرایند و در آخر نوشتن یک سری داده ی 0 روی فایل برای مخفی کردن فرایند میشوند.
Overwrite و پاک کردن فایل
shred -u [filename]
میبینید که با استفاده از آپشن -u فایل در نهایت حذف شده است.
Overwrite کردن مقدار Byte مشخص از فایل
shred -s [number_of_bytes] [filename]
همینطور که میبینید ما ۱۰ بایت اول فایل test.txt را overwrite کردیم.
هنگام استفاده از shred موارد زیر را در نظر بگیرید
دستور shred بر این مبنا کار میکند که دادههای جدید دقیقا در محل دادههای قدیمی نوشته میشوند. بعضی از فایل سیستمها این قاعده را رعایت نمیکنند و طبیعتا دستور shred تاثیر خود را از دست میدهد.
بنابراین shred در موارد زیر موثر نیست:
- فایل سیستمهای log-structured و journaled
- فایل سیستمهای بر مبنای RAID
- فایل سیستمهایی که از سیستم snapshot میگیرند
- فایل سیستمهای دارای cache
- فایل سیستمهای فشرده
همچنین shred گزینهی مناسبی برای پاک کردن فایل از روی SSD ها نیست. در واقع به دلیل wear-leveling نوشتن داده روی بلاکهای مشخص حافظه ممکن نیست.
امیدوارم از این مقاله استفاده برده باشید. خوشحال میشم اگه نکتهای یا نظری دارید توی قسمت کامنتها با من به اشتراک بذارید.