㈠ linux篇:從rm -rf 引發的腳本安全閑聊(set 命令)
上周剛經歷了一個「刪庫跑路」的慘重事件,不知哪位無邪的童鞋把Confluence 的數據存儲目錄 /var 清空了,結果群眾的怒火燃燒上了天空
這次結合自己的一些思考來記錄一些有關腳本安全的點
先來看一個簡單的案例
在用戶主目錄下創建safe目錄及相關文件用於測試演示
假如寫一段腳本刪除safe目錄下所有文件:
這段是不是看起來沒有問題,但如果由於有些大心臟的同學粗心,寫成下面這樣
最終,腳本都變成了rm -rf * ,可怕至極
其實在shell腳本當中,為了防止這種現象,我們可以藉助set 命令來實現相關控制
關於set 命令有較多參數,這里介紹最常用的幾個
我們以剛才圖4那段有問題的腳本說事
為保證不錯刪東西 ,我們加一個set -u 選項 ,判斷變數是否存在
我們執行一下,看看效果
看,報錯啦,dir這個變數沒有聲明,ls 查看一下文件,發現都還存在
set -e 與set -u 通常搭配在一起使用
一個是遇到錯誤退出,一個是發現空變數報錯
這兩個搭配在一起放在腳本里可以防止一些變數為空導致文件全被清空的問題
拓展一下:
如果只想應用在腳本的某一段中,那麼
開始段落前加set -e 表示範圍開始
結束段落後加 set +e 表示範圍結束
set -x 與set + x同理。
1、刪文件其實不用rm -rf ,不是受迫性需要,不要使用rm -rf
2、修改、刪除系統文件或其他重要的東西,先備份一份
3、非特殊需要,不建議在root下操作,普通用戶即可
4、腳本加上set -e 與set -u保證安全
㈡ Linux下rm -rf刪除文件夾報錯
在終端執行 lsof +D 再加上無法刪除文件的目錄,把顯示的process都kill掉,然後再rm就可以了。
㈢ linux rm rf 什麼命令都無法使用
rm -rf * 刪除當前目錄下的所有文件
這個命令很危險,應避免使用。
所刪除的文件,一般都不能恢復!
所以文件的都沒有了,命令也就都沒有了
㈣ 請教大神,linux 下 rm -rf 無法刪除 directory not empty
lsattr 查看文件夾特殊許可權設置,應該是設置了i了,chattr去掉了再試,這個世界連root都刪不掉的只有這個可能了。
㈤ rm-rf無法刪除文件夾
1、首先是因為文件帶有i屬性,去除掉此屬性,然後我們再執行刪除,就可以順利刪除掉了。
2、其次正常情況下,Linux系統中,切換到某個目錄然後執行 rm -rf 命令是可以刪除該目錄下所有文件的,但是以下文件也是無法直接刪除的。
3、最後開頭的隱藏文件,點(.)開頭的隱藏目錄需要手動刪除一下。
㈥ linux系統rm -rf/*怎麼恢復可以重做系統么
1、執行刪除命令前,系統運行良好,且操作正常,如下圖所示:
4、強制關機後,重新啟動系統,如下圖所示已經報異常了,無法正常進入系統,此時只有進行重裝系統了。
總結:
1.有點遺憾刪除結束後沒法再使用df、ls這些命令,所以沒辦法看出還剩哪些文件。不過從上面的結果來看,連基礎命令都執行不了,所以用戶數據(如安裝的軟體、部署的網站、資料庫等)肯定也都全刪沒了。
2.因此平時操作的過程中要養成良好的習慣,盡量不要用rm命令,可以用mv命令來代替。比如要刪掉a.txt,可以執行mv a.txt /mytemp ,然後再寫個腳本定時清除/mytemp目錄下的文件,這樣會安全很多。