快速摘要
AI 寫的自動化腳本可能包含危險操作:rm -rf、未經驗證的 sudo、不安全的檔案權限。這篇教你如何審查和安全地使用 AI 生成的腳本。
AI 腳本的風險
AI 生成的自動化腳本有特殊風險,因為腳本通常有較高的系統權限:
- 檔案刪除:rm -rf 配合空變數可能刪除整個系統
- 權限修改:chmod 777 讓所有人可讀寫執行
- 網路下載執行:curl | bash 直接執行遠端腳本
- 環境變數洩漏:echo $SECRET_KEY 把密碼印出來
Shell 腳本安全
Shell 腳本的安全寫法:
- 開頭加
set -euo pipefail:遇到錯誤立即停止 - 變數用雙引號包起來:
"$VARIABLE"而不是$VARIABLE - 刪除操作前先確認路徑:
if [ -z "$DIR" ]; then exit 1; fi - 不要用 root 執行不需要 root 的操作
- 使用 shellcheck 工具檢查語法和安全問題
Python 腳本安全
- 不要用 os.system(),用 subprocess.run()
- 不要用 eval() 或 exec()
- 檔案操作使用 pathlib 而不是字串拼接
- 密碼和 Key 用環境變數,不要硬編碼
- 用 virtual environment 隔離依賴
審查要點
- 搜尋所有 rm、del、rmdir 操作,確認刪除目標正確
- 搜尋所有 chmod、chown 操作,確認權限設定合理
- 搜尋所有 curl、wget 操作,確認下載來源可信
- 搜尋所有 sudo 操作,確認是否真的需要 root
- 確認錯誤處理:腳本失敗時不會留下殘破的狀態
常見問題
AI 寫的 Shell 腳本可以直接執行嗎?
絕對不行直接執行。先閱讀每一行,特別注意 rm、chmod、sudo、curl | bash 等危險指令。建議先在測試環境執行。
怎麼限制腳本的權限?
用最小權限原則:不要用 root 執行、限制檔案存取範圍、使用 Docker 隔離執行環境。
AI 會寫出刪除系統檔案的腳本嗎?
會。AI 可能在清理腳本中生成 rm -rf / 或 rm -rf $VARIABLE(當變數為空時等同刪除根目錄)。務必檢查每個刪除操作。