如何使用Linux shred命令?
Linux中的shred命令是一個強大的工具,允許使用者永久刪除檔案並使其無法恢復。當您想要確保敏感資料完全從系統中刪除時,此命令特別有用。在本文中,我們將探討如何使用shred命令,包括示例和輸出。
理解shred命令
在深入研究示例之前,瞭解shred命令的作用非常重要。當您使用rm命令在Linux中刪除檔案時,檔案實際上並沒有從磁碟中刪除。相反,檔案佔據的空間被標記為可重用,但資料仍然保留,直到被新資料覆蓋。這意味著使用合適的工具可以恢復已刪除的檔案。
另一方面,shred命令在刪除檔案之前會覆蓋檔案資料,使其難以(如果不是不可能)恢復。預設情況下,shred會覆蓋檔案三次,但這可以使用-n選項進行調整。
shred的基本用法
shred命令的基本語法如下:
shred [options] file_name
這是一個簡單的例子:
shred document.txt
在這個例子中,shred命令將覆蓋document.txt三次。命令執行後,document.txt中的資料將被隨機資料位替換。
shred命令選項
shred命令附帶幾個選項,允許您自定義其行為:
-n - 此選項允許您指定應覆蓋資料的次數。例如,shred -n 5 document.txt將覆蓋document.txt五次。
-u - 此選項告訴shred在覆蓋檔案後將其刪除。預設情況下,shred不會刪除檔案,它只會覆蓋資料。要覆蓋然後刪除檔案,可以使用shred -u document.txt。
-z - 此選項新增最後一次用零覆蓋來隱藏粉碎過程。如果您不想讓別人知道檔案已被粉碎,這將非常有用。例如,shred -z document.txt將覆蓋document.txt三次,然後用零進行最後一次覆蓋。
-v - 此選項啟用詳細模式,顯示操作進度。例如,shred -v document.txt將顯示粉碎過程的進度。
這是一個使用所有這些選項的示例:
shred −n 5 −u −z −v document.txt
此命令將覆蓋document.txt五次,刪除檔案,最後一次用零覆蓋,並顯示操作進度。
讓我們深入研究一些包含各自輸出的更多示例
示例1:基本的shred命令
命令 -
shred file1.txt
此命令將用隨機資料三次覆蓋file1.txt。除非發生錯誤,否則終端不會有任何輸出。
示例2:指定覆蓋次數
命令 -
shred −n 10 file2.txt
此命令將用隨機資料十次覆蓋file2.txt。同樣,除非發生錯誤,否則不會有任何輸出。
示例3:覆蓋並刪除檔案
命令 -
shred −u file3.txt
此命令將三次覆蓋file3.txt,然後將其刪除。除非發生錯誤,否則不會有任何輸出。
示例4:用零覆蓋
命令 -
shred −z file4.txt
此命令將用隨機資料三次覆蓋file4.txt,然後用零進行最後一次覆蓋。除非發生錯誤,否則不會有任何輸出。
示例5:詳細模式
命令 -
shred −v file5.txt
輸出 -
shred: file5.txt: pass 1/3 (random)... shred: file5.txt: pass 2/3 (random)... shred: file5.txt: pass 3/3 (random)...
此命令將用隨機資料三次覆蓋file5.txt,並顯示操作進度。
示例6:使用所有選項
命令 -
shred −n 5 −u −z −v file6.txt
輸出 -
shred: file6.txt: pass 1/6 (random)... shred: file6.txt: pass 2/6 (random)... shred: file6.txt: pass 3/6 (random)... shred: file6.txt: pass 4/6 (random)... shred: file6.txt: pass 5/6 (random)... shred: file6.txt: pass 6/6 (000000)... shred: file6.txt: removing shred: file6.txt: renamed to 00000000000000 shred: 00000000000000: removed
此命令將用隨機資料五次覆蓋file6.txt,刪除檔案,最後一次用零覆蓋,並顯示操作進度。
示例7:粉碎多個檔案
命令 -
shred −v file1.txt file2.txt file3.txt
輸出 -
shred: file1.txt: pass 1/3 (random)... shred: file1.txt: pass 2/3 (random)... shred: file1.txt: pass 3/3 (random)... shred: file2.txt: pass 1/3 (random)... shred: file2.txt: pass 2/3 (random)... shred: file2.txt: pass 3/3 (random)... shred: file3.txt: pass 1/3 (random)... shred: file3.txt: pass 2/3 (random)... shred: file3.txt: pass 3/3 (random)...
此命令將分別用隨機資料三次覆蓋file1.txt、file2.txt和file3.txt,並顯示操作進度。
示例8:粉碎目錄(不推薦)
命令 -
shred −v −u directory_name/*
輸出 -
shred: directory_name/file1.txt: pass 1/3 (random)... shred: directory_name/file1.txt: pass 2/3 (random)... shred: directory_name/file1.txt: pass 3/3 (random)... shred: directory_name/file1.txt: removing shred: directory_name/file1.txt: renamed to 00000000000000 shred: 00000000000000: removed ...
此命令將用隨機資料三次覆蓋directory_name中的所有檔案,刪除檔案,並顯示操作進度。請注意,shred不能用於安全地刪除目錄本身,因為它設計用於普通檔案。
示例9:用更多覆蓋和零覆蓋檔案
命令 -
shred −n 10 −z −v file4.txt
輸出 -
shred: file4.txt: pass 1/11 (random)... shred: file4.txt: pass 2/11 (random)... ... shred: file4.txt: pass 10/11 (random)... shred: file4.txt: pass 11/11 (000000)...
此命令將用隨機資料十次覆蓋file4.txt,最後一次用零覆蓋,並顯示操作進度。
示例10:僅用隨機資料覆蓋檔案
命令 -
shred −n 5 −v file5.txt
輸出 -
shred: file5.txt: pass 1/5 (random)... shred: file5.txt: pass 2/5 (random)... shred: file5.txt: pass 3/5 (random)... shred: file5.txt: pass 4/5 (random)... shred: file5.txt: pass 5/5 (random)...
此命令將用隨機資料五次覆蓋file5.txt,並顯示操作進度。
請注意,實際輸出可能因shred命令的版本和您使用的檔案系統而異。
結論
shred命令是確保永久刪除敏感資料的強大工具。但是,請注意,shred可能在某些檔案系統上無效,包括某些型別的日誌檔案系統、基於RAID的檔案系統以及在臨時位置快取的檔案系統。始終確保您瞭解所用工具的侷限性,並考慮多層安全性以保護敏感資料。