shred (Unix)
shred是Unix與類Unix系統中的命令之一,用於安全刪除文件與設備數據使之難以被恢復。shred也是GNU核心工具組的組成部分之一。
開發者 | GNU |
---|---|
當前版本 | 8.23(2014年7月18日Coreutils組成部分發布)) | (作為
源代碼庫 | |
編程語言 | C |
操作系統 | 類Unix |
類型 | 文件處理工具 |
許可協議 | GNU GPL |
網站 | Coreutils - GNU core utilities |
背景
編輯為保證效率,刪除某一文件一般只需刪除其在文件系統中的對應項,實際的文件內容則仍完好無損,這一特性也多為常見的數據恢復軟件所利用以恢復文件。而假使該文件內容被其他內容所覆蓋,專業的數據恢復設備也能利用本有存儲內容的剩餘磁場來恢復原始內容。針對這些特點,shred以用能最大程度破壞原始數據的模式多次覆寫文件的方式來達到安全刪除的目的[1]。
特點
編輯shred可以對普通文件或設備(在Unix與類Unix系統中設備也是一類文件)調用。若使用默認設定,shred就會以多種模式覆寫文件3遍,但覆寫的次數也可以由用戶以使用-n的方式來定義。在使用-z的情況下,shred還可以在最後一次覆寫時將文件全部以0覆寫,這也可藉以掩蓋文件曾用shred覆寫過的痕跡。
默認情況下,shred也會覆寫文件系統裡為文件分配的空間中的空閒空間。任舉一例,在一簇占用4KB的文件系統中存儲一個5KB的文件,那該文件實際分配的空間就是8KB(2簇),而對該文件執行shred時就會將這8KB空間全部覆寫;但若額外使用-x選項就可以避免覆寫空閒空間。除此以外,shred還可搭配-u選項以在覆寫完畢後自動刪除文件。
局限性
編輯shred的局限性之一是當對某一普通文件使用時,shred只會覆寫該文件而不會覆寫文件的其他副本,而如手動/自動備份、文件系統快照、文件系統的COW機制、閃存介質的耗損平均機制、網絡文件系統的緩存機制和日誌文件系統的日誌機制都可能導致文件副本的產生。因為文件系統本身的機制所產生的局限性都可以用一個辦法解決,即是直接對包含目標數據的所有設備使用shred,但對於應用了耗損平均技術的設備來說,數據分配所得的邏輯塊與實際的物理位置並不能保證是固定關聯的,因而對設備進行shred也無法保證有足夠的安全性。在這種情況下,SATA設備的安全擦除命令(如hdparm)就是更好的選擇,甚至對磁性存儲設備來說使用SATA安全擦除工具也更快且更可靠。除此之外,對於無法使用的硬盤等設備就可以考慮用物理破壞的方式使內容不可還原了[1]。
參考資料
編輯- ^ 1.0 1.1 Gutmann, Peter. Secure Deletion of Data from Magnetic and Solid-State Memory. Sixth USENIX Security Symposium. [2012-09-05]. (原始內容存檔於2007-12-09).
參見
編輯- shred invocation. GNU Coreutils. [2012-09-09]. (原始內容存檔於2012-09-17).
- Shred and secure-delete. Free Software Magazine. 2008-11-29 [2012-09-09]. (原始內容存檔於2008-12-04).
- Secure Erase Definition. About.com. [2012-09-09]. (原始內容存檔於2012-11-18).
- How To Completely Erase a Hard Drive. About.com. [2012-09-09]. (原始內容存檔於2012-11-18).