哈嘍大家好,我是鹹魚 離過職的小伙伴都知道,離職的時候需要上交公司電腦,但是電腦裡面有許多我們的個人信息(聊天記錄、瀏覽記錄等等) 所以我們就需要先把這些信息都刪除,確保無法恢復之後才上交 即有些情況下我們不得不以一種確保無法恢復的方式從磁碟上擦除所有信息 許多小伙伴可能認為使用文件管理器或者 rm ...
哈嘍大家好,我是鹹魚
離過職的小伙伴都知道,離職的時候需要上交公司電腦,但是電腦裡面有許多我們的個人信息(聊天記錄、瀏覽記錄等等)
所以我們就需要先把這些信息都刪除,確保無法恢復之後才上交
即有些情況下我們不得不以一種確保無法恢復的方式從磁碟上擦除所有信息
許多小伙伴可能認為使用文件管理器或者 rm
命令刪除數據可以保證安全性,但其實不然
因為 rm
命令或者文件管理器刪除文件只是刪除指向文件系統的指針(inode),所以原始數據仍可以使用
在 Linux 中,文件由指針部分(inode)和數據部分(data)組成
文件被刪除的時候,文件對應的 inode 就被刪除掉了,而文件的數據部分在 inode 被清除掉之後,就會被覆蓋並寫入新的內容
下麵我們來看一下在 Linux 中如何安全地抹去磁碟數據吧!
PS:文章中提到的命令請謹慎使用!別怪鹹魚沒提醒大家
shred
我們先來看看 shred
命令,它是 Linux 中保護私人數據的最佳方式之一
shred
功能是重覆覆蓋文件,只能使用專門的硬體並且極其困難地恢複數據,所以它經常被用來安全地擦除數據
shred
是 Linux 軟體包 coreutils
的一部分,所以一般情況下是預設安裝的
預設情況下,shered
會執行三次,在執行的時候,它會將偽隨機數據寫入設備。
例如我們要擦除 dev/sdb
設備
# -v 表示輸出執行詳細信息
shred -v /dev/sdb
前面我們說到,shered
會執行三次。但是執行三次所需的時間太長了,我們可以通過 -n
來設置執行次數
# 執行一次
shred -v -n 1 /dev/sdb
我們還可以添加更多選項來提高從磁碟刪除數據的可靠性
shred -v -n 1 --random-source=/dev/urandom -z /dev/sdb
--random-source=/dev/urandom
:表示指定使用隨機生成的數據覆蓋磁碟。Linux 的特殊文件/dev/urandom
為內核的隨機數生成器提供了一個介面-z /dev/sdb
:用 0 覆蓋到目前為止的所有內容
wipe
看這個命令的名字就可以知道,這個命令用於擦除(wipe)磁碟中的數據
wipe
命令會重寫磁碟扇區並刷新緩存,這使得想要恢複數據是一件極其困難或者說不可能的事
Linux 預設沒有這個工具,我們需要先安裝
# 以 CentOS 7 為例
yum install -y wipe
這個命令很簡單,後面只需加上磁碟路徑即可
wipe /dev/sdb
ps:現在好像 wipe 這個工具安裝不了了,我試了多個鏡像源然後 yum 安裝的時候都說沒有該軟體包(安裝了拓展源也不行),有知道原因的小伙伴歡迎給我留言
dd
dd
可從標準輸入或文件中讀取數據,根據指定的格式來轉換數據,再輸出到文件、設備或標準輸出
dd
命令是 Linux 中另一種常用的擦除磁碟的方法,儘管該命令並不像 shred
和 wipe
那樣明確地用於從磁碟中擦除數據,但它是 Linux 用戶廣泛使用的方法
例如下麵的命令可以安全可靠地擦除 /dev/sdb
設備中的數據
dd if=/dev/urandom of=/dev/sdb bs=512 status=progress
if=/dev/urandom
:輸入文件,我們用/dev/urandom
生成隨機數據of=/dev/sdb
:輸出文件,表示要擦除的磁碟bs
:塊大小(以位元組為單位)
當顯示 “No space left on device”時,表示擦除成功完成
或者我們用 zero 字元串對磁碟進行覆蓋,而不是生成隨機數據
dd if=/dev/zero of=/dev/sdb bs=4096 status=progress
參考文章:https://linuxiac.com/best-ways-to-securely-erase-disk-in-linux/