Linux ve diğer işletim sistemlerinde kullanılan silme işleminin, aslında dosyalarınızı gerçekten silmediğini biliyor musunuz? Konuyu bir miktar açıklamaya çalıştığımız bu yazı ilginizi çekebilir.
Görsel arayüz kullanıyorsanız, Geri Dönüşüm Kutusu, Trash veya Çöp kutusu ifadelerini mutlaka bilirsiniz. Masaüstü ortamında dosyaya sağ tıklar ve SİL-Çöpe Gönder seçeneklerinden birisini seçersiniz.
İşletim sisteminize göre, dosyayı Çöp Kutusuna göndermeden silme (Shift+Delete) yöntemi de bulunuyor olabilir. Komut satırından rm komutuyla silme işlemini de gerçekleştirebilirsiniz. (Not:Komut satırında silme geri dönüşümsüz yapılır.)
Yukarıda bahsedilen yöntemlerden hangisini uygularsanız uygulayın, aslında dosyalarınız disk alanında yazılı oldukları yerlerden fiziksel olarak silinmezler. Sadece işletim sisteminizin yer bulma kataloğuna, o adresler boştur bilgisi kodlanır. Dolayısıyla üzerine yazılabilir hale gelir. Aslında sildiğinizi düşündüğünüz veriler, diskinizde halen duruyordur. Ne zamanki yeni bilgiler diske yazılmak için yer aranırsa, üzerine yazılır. Peki, gerçekten kalıcı silme nasıl yapılabilir?
Bu işlemi yapabilmek için Linux ile kurulu olarak gelen shred komutu bulunmaktadır. Shred komutu, silme işlemini bizzat disk üzerindeki adreslere giderek yapar. Komut parametrelerine yazacağınız kurallara göre, dosyanın bulunduğu adreslere rastgele veri bitleri yazar. Dosyayı parçalar, karıştırır ve üzerine 10-20-30 veya daha fazla sayıda yeni rastgele veriler yazarak geri dönüştürülemez hale getirir. Bu işlemin normalde kullanılmamasının nedeni olarak da; diske gereğinden fazla veri yazdırdığınızda, diskin kullanım ömrünün kısalacağı varsayımı gösterilir.
Şimdi bir örnekle shred komutunun bir dosyayı nasıl sildiğini görelim.
shred -vuf --iterations=32 systemctl.xls
Örneğimizde, systemctl.xls isimli, 10752 byte uzunlukta bir dosya bulunmaktadır. Bu dosya için -v (verbose), -u (remove), -f (force) parametreleri verilmiş ve işlemin (iterations) 32 defa tekrar edilmesi istenmiştir. Burada;
Komut | Açıklama |
---|---|
-v (verbose) | Yapılan işlemin ekranda gösterilmesi istenmektedir. |
-u (remove) | Silme işleminden sonra dosyanın bölünmesi ve daha sonra rm komutuyla silinmesi istenmiştir. -u parametresi kullanılmaz ise dosyanın üzerine yazıldığı halde, dosya ismi sistemde görünmeye devam eder. Sadece içeriği okunamaz. |
-f (force) | Bu parametre ile dosya, silmeye karşı korumalı olsa bile yetki değiştirilmesine izin verilmektedir. |
linux@user:~/Desktop/knife$ ls -al
total 20
drwxrwxr-x 2 siber adam 4096 Haz 28 02:21 .
drwxr-xr-x 11 siber adam 4096 Haz 28 02:04 ..
-rw-rw-r-- 1 siber adam 10752 May 9 02:10 systemctl.xls
linux@user:~/Desktop/knife$ shred -vuf --iterations=32 systemctl.xls
shred: systemctl.xls: pass 1/32 (random)...
shred: systemctl.xls: pass 2/32 (924924)...
shred: systemctl.xls: pass 3/32 (db6db6)...
shred: systemctl.xls: pass 4/32 (ffffff)...
shred: systemctl.xls: pass 5/32 (444444)...
shred: systemctl.xls: pass 6/32 (555555)...
shred: systemctl.xls: pass 7/32 (888888)...
shred: systemctl.xls: pass 8/32 (7fffff)...
shred: systemctl.xls: pass 9/32 (222222)...
shred: systemctl.xls: pass 10/32 (00e00e)...
shred: systemctl.xls: pass 11/32 (bbbbbb)...
shred: systemctl.xls: pass 12/32 (random)...
shred: systemctl.xls: pass 13/32 (a49249)...
shred: systemctl.xls: pass 14/32 (777777)...
shred: systemctl.xls: pass 15/32 (999999)...
shred: systemctl.xls: pass 16/32 (111111)...
shred: systemctl.xls: pass 17/32 (6db6db)...
shred: systemctl.xls: pass 18/32 (cccccc)...
shred: systemctl.xls: pass 19/32 (124924)...
shred: systemctl.xls: pass 20/32 (249249)...
shred: systemctl.xls: pass 21/32 (333333)...
shred: systemctl.xls: pass 22/32 (random)...
shred: systemctl.xls: pass 23/32 (dddddd)...
shred: systemctl.xls: pass 24/32 (666666)...
shred: systemctl.xls: pass 25/32 (800000)...
shred: systemctl.xls: pass 26/32 (aaaaaa)...
shred: systemctl.xls: pass 27/32 (000000)...
shred: systemctl.xls: pass 28/32 (492492)...
shred: systemctl.xls: pass 29/32 (b6db6d)...
shred: systemctl.xls: pass 30/32 (eeeeee)...
shred: systemctl.xls: pass 31/32 (c44444)...
shred: systemctl.xls: pass 32/32 (random)...
shred: systemctl.xls: removing
shred: systemctl.xls: renamed to 0000000000000
shred: 0000000000000: renamed to 000000000000
shred: 000000000000: renamed to 00000000000
shred: 00000000000: renamed to 0000000000
shred: 0000000000: renamed to 000000000
shred: 000000000: renamed to 00000000
shred: 00000000: renamed to 0000000
shred: 0000000: renamed to 000000
shred: 000000: renamed to 00000
shred: 00000: renamed to 0000
shred: 0000: renamed to 000
shred: 000: renamed to 00
shred: 00: renamed to 0
shred: systemctl.xls: removed
Bu komut ve parametreler ile dosya diskinizden oldukça kalıcı olarak silinmiştir.