Yanıtlar:
Özyinelemeyle find
çalıştırmak için komutu kullanın shred
:
find <dir> -type f -exec shred {} \;
man shred
.
srm
@ Cookie'nin cevabından en azından bu sorunu çözmeye çalışacaktır).
-exec shred {} +
Parçalama birden fazla argüman kabul ettiğinden daha hızlı yapmak için kullanın .
Parçalanmaya dikkat!
Shred-manpage'den:
DİKKAT: Parçalamanın çok önemli bir varsayıma dayandığını unutmayın: dosya sisteminin verileri yerinde yazdığını. Bu işleri yapmanın geleneksel yoludur, ancak birçok modern dosya sistemi tasarımı bu varsayımı karşılamıyor. Aşağıda, parçalamanın etkili olmadığı veya tüm dosya sistemi modlarında etkili olacağı garanti edilmeyen dosya sistemleri örnekleri verilmiştir:
AIX ve Solaris (ve JFS, ReiserFS, XFS, Ext3, vb.) ile sağlananlar gibi log yapılı veya günlük dosya sistemleri
RAID tabanlı dosya sistemleri gibi gereksiz veriler yazan ve bazı yazma işlemleri başarısız olsa bile devam eden dosya sistemleri
Network Appliance'ın NFS sunucusu gibi anlık görüntüler veren dosya sistemleri
NFS sürüm 3 istemciler gibi geçici konumlarda önbellekleyen dosya sistemleri
sıkıştırılmış dosya sistemleri
Ext3 dosya sistemlerinde, yukarıdaki feragatname sadece (verinin sınırlı olması anlamına gelir) yalnızca data = dergi modunda geçerlidir, bu da sadece meta verilere ek olarak dosya verilerini de yayınlar. Hem data = order (varsayılan) ve data = writeback modlarında, shred her zamanki gibi çalışır. Ext3 günlük kaydı modları, mount man sayfasında (man mount) belgelendiği gibi / etc / fstab dosyasındaki belirli bir dosya sistemi için mount seçeneklerine data = bir şey seçeneği eklenerek değiştirilebilir.
Ek olarak, dosya sistemi yedekleri ve uzak aynalar, kaldırılamayan dosyanın parçalarını içerebilir ve bu parçalanmış bir dosyanın daha sonra kurtarılmasını sağlar.
Çözüm: Şifrelenmiş bir dosya sistemi kullanın ve dosyalarınızı silin.
shred
veri kullanımı hem de veri şifrelemesi, çevrimdışı bir depolama cihazından (hırsızlığı veya polisi düşün) verileri okumanın önüne geçerek veri şifrelemeye ek olarak, yalnızca silinmiş dosyaları değil (tüm dosyaları) korumaktan yararlanır. Dosya sistemi bir kez kurulduktan sonra her iki durumda da iyi unix izinlerine geri dönüyoruz ve veri koruması yine işletim sistemi güvenliği ve uygun sistem yönetimi görevi haline geliyor. Öncelikli dosya sistemi şifrelemesi kesinlikle verilerin istirahatte korunmasında stratejik kullanımdan daha kötü değildirshred
!
Bunun yerine güvenli silme kullanın.
sudo apt-get install secure-delete
srm -r pathname
Bitti. Güvenli silme, parçalamadan çok paranoyaktır, 3 yerine 38 geçişi kullanmak
srm -rfll pathname
fll, daha az rastgele bir veri üreteci ve sadece tek bir geçiş alır.
find
kesilmiş ve bağlantılarını kaldırmadan önce dosyaları yeniden adlandırarak saklanan dosya adlarını silmeye çalışacak önerilen tabanlı yöntemlere göre ek bir yararı olduğunu unutmayın .
Bu cevabı, bu yığın taşması bağlantısını kullanarak 'bilinen ve güvenli bir şekilde CentOS'ta Dosyaları Silme ' seçeneğini kullanarak en iyi bilinen seçeneklerle birleştirin :
find <directory> -depth -type f -exec shred -v -n 1 -z -u {} \;
Düzenleme: Tek bir dosyayı parçalamak için en iyi cevabın , dosyayı silmeden önce medyaya değişiklikler yazan bir senkronizasyonu zorladığının farkında olun; çünkü günlüklü dosya sistemlerinin bazılarında veya hepsinde bir tampon bulunur.
Mümkünse, find komutu çalışan dosya üzerinde bir kabuk betiği çağırmalıdır:
shred -v -n 1 /path/to/your/file #overwriting with random data
sync #forcing a sync of the buffers to the disk
shred -v -n 0 -z -u /path/to/your/file #overwriting with zeroes and remove the file
her dosyada.
rm -rvf $1
{}
find... -exec
depth
Burada ne iş yapıyor ? Sondaki ters eğik çizgi hakkında da emin
find /your/directory -exec shred {} \;
find [dirname] -depth -type f -exec shred -n1 {} \;
Bu, [dirname] dizinindeki dosyalar için ilk önce bir arama gerçekleştirir, ardından shred -n1
her bir dosyadaki komutu çalıştırır . Dosyaları ve / veya dizinleri kaldırırken, -depth
varsayılan olarak eklemek , bu durum için kesinlikle gerekli olmasa da, iyi bir alışkanlıktır. İle komuta bu tür çalıştırırken rm -rf
yerine shred
, -depth
dizinleri içeriği (böylece hataları neden olan) silinecek denenmeden önce dizinleri silinmez sağlamak için gereklidir.
shred -N 1
, çünkü varsayılan, 3 kez parçalama, yılan yağıdır. Ya bir kez yeterli, ya da 30 kez işe yaramayacak.
shred
Dizin kaldırma işlemini de içeren en kapsamlı yöntem, aşağıdakileri yapmak için find
bir komut dosyasını çağırmaktır shred
:
Bu yöntem ayrıca dosya adlarını içinde boşluk olan düzgün bir şekilde işler.
İlk önce - shred
senaryo (benim ismini verdim dirShredder.sh
ve /root
dizinde sakladım:
shred -v -n 1 "$1" #overwriting with random data
sync #forcing a sync of the buffers to the disk
shred -v -n 0 -z -u "$1" #overwriting with zeroes and remove the file
rm -rvf "$1" # call rm to remove the directories
Sonra betiği şöyle çağır:
find /volume1/pathToShred/ -mindepth 1 -depth -exec /root/dirShredder.sh "{}" \;
killit.sh
Yürütülebilir dosyayı ( chmod +x
) işaretlediğinizden ve elbette parçalamak istediğiniz dizin yolunu ve dirShredder.sh
başka bir yerde saklıyorsanız güncellediğinizden emin olun .
NOTA BENE - shred
Yazma Kopyalama dosya sistemlerinde (ZFS, BTRFS, vb.) Ve hatta Günlük Kaydı dosya sistemlerinde sorunları vardır. "Şifrelenmiş dosya sistemleri" dışında bulduğum bununla baş etmek için kabul edilen gerçek bir "en iyi" yol yok ama bunun ne kadar etkili olduğundan emin değilim.
Alabileceğiniz en yakın görünüme, parçalama işlemlerinden sonra sürücüdeki tüm boş alanların üzerine rasgele veri yazmak (sıfırlar değil, bu her zaman güvenilir değil gibi görünüyor.) Ayrıca, SSD'lerin de başka endişeleri olabilir (TRIM gibi).
Buradakilere girmiyorum, başka Stack cevapları var (örneğin bu sorudaki kullanıcı tarafından bilinmeyenlerin cevabı) ve bu konuları kapsayan net tartışmalar bu seviyede bir güvenlik düzeyine ihtiyacınız varsa onları araştırın.