為什麼 dd 沒有防止在活動磁碟上寫入?
我經常使用 dd。我一直害怕有一天會犯錯誤,例如寫在 sda(電腦磁碟)而不是 sdb(USB 磁碟)上,然後擦除我電腦上的所有內容。
我知道 dd 應該是一個高級使用者工具,但對我來說,你基本上可以通過按錯鍵來搞砸整個電腦,這對我來說沒有任何意義。
為什麼沒有安全措施來阻止 dd 在它獲取命令的磁碟上寫入數據?不知道有人會如何故意這樣做。
請注意,我自己沒有嘗試過,我只是讀過它,所以我可能錯了。
有理由問為什麼 dd 命令不首先檢查其目標是否包含已掛載的文件系統,然後提示確認或需要特殊標誌。一個簡單的答案是,它會破壞任何希望能夠以這種方式使用 dd 的腳本,並且這些腳本並非旨在處理互動式輸入。例如,在掛載原始設備的分區時修改原始設備的分區表是合理的;你只需要小心只修改第一個扇區。
外面有大量的 Linux 系統,不可能知道人們想出了什麼樣的瘋狂設置。因此 dd 的維護者不太可能進行向後不兼容的更改,這會導致未知數量的環境出現問題。
我知道 dd 應該是一個高級使用者工具,但對我來說,你基本上可以通過按錯鍵來搞砸整個電腦,這對我來說沒有任何意義。
考慮一下土木建築中使用的電動工具的種類,以及做錯一件小事會搞砸什麼。可以使這些事情更容易預防嗎?可能,但平衡是在多大程度上使事故更可預防使工具變得不那麼有用和/或更笨拙。
駕駛汽車是一個類似的類比,可能會產生更可怕的後果,但人類一直都在設法做到這一點(實際上太多了)。當然,如果他們做得慢一點會更安全,但我們共同決定了哪些風險值得承擔。同樣,如果電腦
dd
不存在,它會更安全,但由於人們認為它的有用性大於其風險,它確實存在。為什麼沒有安全措施來阻止 dd 在它獲取命令的磁碟上寫入數據?
事實上有,因為預設情況下設備文件(例如
/dev/sda1
)需要超級使用者權限才能寫入。因此,除非您使用 asroot
或 via工作,否則sudo
您實際上無法使用一個按鈕來擰緊整個電腦dd
。這讓我們明白為什麼有關於以超級使用者權限執行命令的所有警告。 這些警告非常普遍,我認為在沒有看到它們的情況下最終操作 *nix 系統是很困難的,有點像進入施工區而不注意到HARD HAT AREA標誌。
如果您沒有理由進入施工區,請離開。如果這樣做,請採取適當的安全預防措施。世界可能是一個危險的地方,有些地方比其他地方更危險。不要不假思索地行動。一定程度的安全性可以確保不會發生任何不好的事情——所以你不必費心思考——意味著你也不能做太多事情。有時這是可取的,有時則不是。