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 / 會跳出錯誤訊息

linux rm -rf protection

但如果你堅持要刪根目錄的話,參考它的警告提示 或者 rm的manpage後發現

可以加入 --no-preserve-root 這個option.

或者是根目錄底下的所有檔案、目錄各別去刪應該也行 (或者用 rm -rf /* 指令?)

因此如果遇到惡意的shell script以root權限執行還是要多加小心.

另外,我記得Mac OS目前底下的rm 是沒有這種保護措施的(手邊沒機器可以測試)

所以mac user只好自求多福了XD

arrow
arrow
    全站熱搜

    fvalinux 發表在 痞客邦 留言(0) 人氣()