close
之前在COSCUP的會場聽到一位KKBOX的工程師講到shell在使用上會遇到的問題
不過很可惜他沒提到一個重點就是linux目前已經會限制rm -rf / 的這種指令了.
很多人在系統管理時會誤打rm -rf / 或是在寫shell 時,執行刪除特定的暫存目錄
rm -rf /${var}
在script裡面沒有去檢查var這個變數的內容就直接rm -rf ,如果這個var變數
忘記給它設值,或是不小心給了它一個空值
(譬如要將執行結果的內容assign給它,但執行內容卻沒得到結果)
就很容易造成系統整個被誤砍.
因此,後來Gnu Core Utility (原始碼) 在6.4版(2006年)時,就引進了保護機制,
新增了一個option叫做 --preserve-root
而且預設它是開啟的,所以你在linux下面直接以root身份打rm -rf / 會跳出錯誤訊息
但如果你堅持要刪根目錄的話,參考它的警告提示 或者 rm的manpage後發現
可以加入 --no-preserve-root 這個option.
或者是根目錄底下的所有檔案、目錄各別去刪應該也行 (或者用 rm -rf /* 指令?)
因此如果遇到惡意的shell script以root權限執行還是要多加小心.
另外,我記得Mac OS目前底下的rm 是沒有這種保護措施的(手邊沒機器可以測試)
所以mac user只好自求多福了XD
全站熱搜
留言列表