救回 Mac OS X 的 System Policy

大家恭喜發大財, 先說心得, 如果要貪小便宜用了不該用的軟體, 付出的代價其實是到最後是一樣的或者是更高, 那就是時間成本

Screen Shot 2016-02-09 at 11.58.21 AM

話說因為要測試一些軟體, 所以將安全與隱私(Security&Privacy)全部打開, 允許未驗證App的執行, 測試之後雖然有馬上恢復預設值, 但是事實上之前允許的App 因為已經允許過了 — 所以一樣是可以執行的, 因此覺得有點系統潔癖的我馬上心有不安, 但是又無法取消之前允許的動作, 經過 Google 之後查到了 spctl 這個命令, 但是因為那個命令沒有 label (Google 查到的用法)所以無法單獨刪除那個 App 的單一規則,  所以心一橫就 spctl  –remove 接著就出現需要 root 權限, 很順的把密碼敲進去按下 Enter, 不到一秒鐘搞定, 接著用 spctl –list 列出規則, Ya 全部清除了 (覺得非常的安全), 趕快來測試一下, 是否生效, 心裡正覺得得意的時候, 發現怎麼變成所有只要是從網路下載的 dmg 只要執行裡面的App都會顯示檔案損毀訊息, 只能從 App Store 下載安裝可以被執行, 這時候才發現是資料刪過頭了, 把原本資料庫內建有效開發者簽章的資料也一併刪了, 所以變成只要是網路下載的 App 都顯示檔案損毀

Screen Shot 2016-02-09 at 12.15.00 PM

本來想要重裝 OS 了事, 但是資料實在太多了, 不太可能允許重裝, 於是又開始 Google 從網路上找到的片段資訊, 終於成功了, 方法也很簡單答案在 /var/db 目錄中

#原來是 SQLite
SystemPolicy: SQLite 3.x database, user version 1

#先備份一下原來的
sudo    cp   SystemPolicy    SystemPolicy-orig

#把系統預設的資料庫恢復, .SystemPolicy-default 前面有一個句點
sudo   cp   .SystemPolicy-default   SystemPolicy

目前預設的簽章規則一共有 1782 條